- 题目
- 题解(36)
- 讨论(31)
- 排行
简单 通过率:39.25% 时间限制:1秒 空间限制:256M
知识点模拟

校招时部分企业笔试将禁止编程题跳出页面,为提前适应,练习时请使用在线自测,而非本地IDE。
描述
给定一个数组 arrayarray ,数组中只包含 11 和 00 ,且数组中的 11 都不相邻。
输入一个数 nn ,问能否在将数组中 nn 个 00 替代换成 11 后不破坏 11 都不相邻的条件。
例1 array=[1,0,0,0,1],n=1 输出 true
例2 array=[1,0,0,0,1],n=2 输出 false
输入描述:
输入一个数 m(1≤m≤105)m(1≤m≤105) 表示 arrayarray 的长度
第二行 mm 个数 00 或 11 表示该位置数组中的元素是 00 还是 11
第三行输入一个数 nn
输出描述:
输出 true 或 false
示例1
输入:
5
1 0 0 0 1
1
复制输出:
true
cpp
#include <iostream>
using namespace std;
const int N = 1e5+10;
int main() {
int m,n;cin>>m;
bool b[N]={0};
int replace=0;
for(int i=1;i<=m;i++)
cin>>b[i];
cin>>n;
for(int i=1;i<=m;i++)
if(!b[i]&&!b[i-1]&&!b[i+1])
{
replace++;
b[i] = 1;
}
if(replace>=n) cout<<"true";
else cout<<"false";
return 0;
}