小小序列,一个遍历直接拿下
#include <iostream>
#include <vector>
using namespace std;
int main() {
int m;
cin >> m;
vector<int> s(m);
int n;
for (int i = 0; i < m; i++) {
cin >> s[i];
}
cin >> n;
int cnt = 0;
if (s[0] == 0 && s[1] == 0) {
s[0] = 1;
cnt++;
}
for (int i = 1; i < m - 1; i++) {
if (s[i-1] == 0 && s[i+1] == 0 && s[i] == 0) {
s[i] = 1;
cnt++;
}
}
if (s[m-1] == 0 && s[m-2] == 0) {
s[m-1] = 1;
cnt++;
}
// cout << cnt << '\n';
if (cnt >= n) {
cout << "true";
}
else {
cout << "false";
}
}

京公网安备 11010502036488号