题目描述小G又在和同学玩游戏,他们制定了一个规则:
(1)一个人说一个单词
(2)后一个人说的单词的首字母是前一个人所说单词的结尾字母
(3)后一个人不能说前面人说过的单词
现在有n个人,给出每个人所说的单词
问:是否都遵守了规则?
输入给出一个n(n<=100)
接下来n个单词(单词长度不超过20)
输出都遵守了规则输出"Yes",否则输出"No"
样例输入4
hoge
english
hoge
enigma
样例输出No
#include<stdio.h>
#include<string.h>
#define n 110
int search(char s[n][n], int x);
int o(char s[n][n], int x);
int main(){
int x, k = 0, flag = 0, i, j, m = 0;
char s[n][n];
memset(s, 0, sizeof(s));
scanf("%d", &x);
for (i = 0; i < x; i++){
scanf("%s", s[i]);
}
if (search(s, x) == 0 && o(s, x) == 0)printf("Yes\n");
else
printf("No\n");
return 0;
}
int search(char s[n][n], int x) // 查找是否有相同的单词
{
int i, flag = 0, j;
for (i = 0; i < x; i++){
for (j = i + 1; j < x - 1; j++)
if (strcmp(s[i], s[j]) == 0)
{
flag = 1; break;
}
}
return flag;
}
int o(char s[n][n], int x){ //首尾是否相同
int i, flag = 0;
for (i = 0; i < x - 1; i++){
if (s[i][strlen(s[i]) - 1] != s[i + 1][0])
flag = 1;
}
return flag;
}