题目链接:http://codeforces.com/contest/957/problem/A
题意:给你一个长度为n的字符串(1<=n<=100),这个字符串中仅出现C、M、Y、?这四种字符,然后将字符串中的?用其他三种代替,使得相邻的字符都不相同。如果方法数大于等于2,输出Yes,否则输出No
分析:很简单,如果有两个不是?的相同元素相邻必然输出No,其他情况只有所有的?都不在首尾且?两边的字符不相同输出No,否则输出Yes。(大概是这意思,代码写的略丑)
AC代码:
1 #include<bits/stdc++.h> 2 3 using namespace std; 4 5 int main(){ 6 ios_base::sync_with_stdio(0); 7 cin.tie(0); 8 char c[10003]; 9 int n; 10 cin>>n; 11 for(int i=1;i<=n;i++) cin>>c[i]; 12 c[n+1]='?'; 13 int p=0; 14 int q=0; 15 for(int i=1;i<=n;i++){ 16 if(c[i]!='?'&&i<n&&c[i]==c[i+1]){ 17 p=1; 18 break; 19 } 20 if(c[i]=='?'){ 21 if(c[i+1]=='?') q=1; 22 else if(c[i-1]==c[i+1]){ 23 q=1; 24 } 25 } 26 } 27 if(c[1]=='?') q=1; 28 if(p==1) cout<<"No"<<endl; 29 else { 30 if(q==1) cout<<"Yes"<<endl; 31 else cout<<"No"<<endl; 32 } 33 return 0; 34 }