codeforces 957A Tritonic Iridescence

题目链接: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 }
View Code
原文地址:https://www.cnblogs.com/ls961006/p/8660355.html