本文主要是介绍Codeforces #604 Div2 A,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Codeforces #604 Div2 a
题目链接
题意:给带?号的只含abc的字符串,判断是否能够给出不含连续aa,bb,cc的串
思路:
如果没有连续的字母,那么一定能够找到对应的串。
只需要遍历一遍字符串即可找到答案
AC代码:
#include<bits/stdc++.h>
using namespace std;
bool qwq;
char s[100500];
void check(int x){s[x]='a';//如果一开始为?,则判断下一个是不是a,若是,则变为b或者c,此次变为b;if(s[0]=='?'){if(s[1]=='a'){s[0]='b';}}//否则判断前后是否为a,b,c,确定此次填入的字符值;else{if(s[x-1]=='a'||s[x+1]=='a'){s[x]='b';if(s[x-1]=='b'||s[x+1]=='b'){s[x]='c';if(s[x-1]=='c'||s[x+1]=='c'){qwq=false;//若a,b,c均不能填,则false;}}}}
}
int main(){int n;cin>>n;getchar();while(n--){qwq=true;gets(s);int len=strlen(s);for(int i=0;i<=len;i++){if(qwq==false) break;//进行上次计算false了,结束循环if(s[i]!=0&&s[i]==s[i-1])qwq=false;//若一开始后面的与前面的一样则false;if(s[i]=='?'){check(i);//每次更改问号的值,这样才能判断上一个if;}}//输出;if(qwq==false){cout<<-1<<endl;}else {for(int i=0;i<len;i++){cout<<s[i];}cout<<endl;}}
}
学习记录
这篇关于Codeforces #604 Div2 A的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!