题意: 给定一个初始包含 .01 的字符串, . 可以变成 0 或 1 ,问有没有一种方案使得这个字符串周期不为 p ,如果有随意输出一种,如果没输出NO。
解法: 写的时候自信锁一波,结果锁完就后悔。其实我们只需要使得某一个a[i]!=a[i+p]a[i]!=a[i+p] 即可,然后其他位置随便填
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 2005;
int n, p;
char a[MAXN];
int main()
{
scanf("%d%d%s", &n, &p, a);
bool flag = false;
for (int i = 0; i+p < n; i++)
{
if (a[i] == '0' && a[i+p] == '1') { flag = true; break; }
if (a[i] == '1' && a[i+p] == '0') { flag = true; break; }
if (a[i] == '.' && a[i+p] == '.') { a[i] = '0'; a[i+p] = '1'; flag = true; break; }
if (a[i] == '.') { a[i] = !(a[i+p]-'0')+'0'; flag = true; break; }
if (a[i+p] == '.') { a[i+p] = !(a[i]-'0')+'0'; flag = true; break; }
}
for (int i = 0; i < n; i++) if(a[i] == '.')
a[i] = '0';
if (flag) cout << a << endl;
else cout << "NO" << endl;
return 0;
}
/*
10 7
1.0.1.0.1.
*/
本文介绍了一个字符串周期性问题的解决方案,通过确保至少一对字符在指定周期内不同来打破周期性。文章提供了一段C++代码示例,展示了如何实现这一逻辑。
764

被折叠的 条评论
为什么被折叠?



