题:
05-ZZ04-09-格雷码的判定
题目描述
格雷码(Gray code)是一种特殊的n位二进制串排列法,它要求相邻的两个二进制串间恰好有一位不同,特别地,第一个串与最后一个串也算作相邻。
例如,0000,0001,0011,0010,0110,0111,0101,0100就是4位的二进制格雷码。
在本题中,输入一组n位的二进制串,判定是否是格雷码。
输入格式
输入数据第一行为正整数n,表示二进制串的个数,n≤100。
第二行有n个二进制串,用空格隔开。测试数据保证每个二进制串的长度相同且不超过5。
输出格式
如果输入的n个二进制串是格雷码,输出yes;否则输出no。
样例 #1
样例输入 #1
8
0000 0001 0011 0010 0110 0111 0101 0100
样例输出 #1
yes
代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
string s;
cin>>n;
int f=1;
for(int i=0;i<n;i++){
cin>>s[i];
}
for(int i=0;i<n;i++){
if(s[i]!=s[i+1] and s[n-1]!=s[0])
f=0;
else
f=1;
}
if(f==0){
cout<<"yes";
}
else{
cout<<"no";
}
return 0;
}