题解 | 01序列

01序列

https://www.nowcoder.com/practice/b0c948dbe577485598b982a430d65c39

#include <bits/stdc++.h>
using namespace std;

int main() {
    int m;
    cin>>m;
    vector<int>arr(m);
    for(int i=0;i<m;i++)
    cin>>arr[i];

    int n;
    cin>>n;

    int place=0;

    for(int i=1;i<m-1;i++){//注意边界条件
        if(arr[i-1]==0&&arr[i+1]==0){
            //无关整体,只要前后两个位置为0就能放下,不管整体直接放
            //如果放下的1的数量大于等于n则退出
            //不是一次全放,而是从前往后一个一个放
            arr[i]=1;
            place++;
            if(place==n)
            break;
        }
    }
    if(place==n)
    cout<<"true";
    else cout<<"false";

}
// 64 位输出请用 printf("%lld")

全部评论
有点问题的代码,如果测试用例是 5 0 0 0 0 0 3 代码看通过,但是有些逻辑不通
点赞 回复 分享
发布于 03-17 19:49 江西

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务