题意是给一个长度为n的字符串,如果有两个相邻的字符相等就输出No,把字符串中的?改成CMY,如果有两种及两种以上的改法就输出Yes。


AC代码:

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
char str[1005];
int n;
int main()
{
	scanf("%d",&n);
	scanf("%s",str);
	for(int i=0;i<n;i++){
		if(str[i] == str[i+1] && str[i] != '?'){
			printf("No\n");
			return 0;
		}
	}
	for(int i=1;i<n-1;i++){
		if(str[i] == '?'){
			if(str[i-1] == str[i+1] || str[i+1] == '?'){
				printf("Yes\n");
				return 0;
			}
		}
	}
	if(str[0] == '?' || str[n-1] == '?'){
		printf("Yes\n");
		return 0;
	}
	printf("No\n");
	return 0;
}