题意:给出一组单词接龙,第二个词的首字母是第一个单词的末字母,问能否利用给出的这组单词从 b 到 m。
题解:二维数组 pic 中每个位置分别代表一个单词,首尾字母代表坐标,每读入一个单词标记为 1,其余是 0。最后判断一下 bm 这个坐标里的数是否为 1 即可。这题注意一下多组数据的读入(我 WA 了一次。。)
#include<iostream>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int n, m;
int pic[50][50];
int main(){
//freopen("a.txt", "r", stdin);
string s;
while(cin >> s){
if(s[0] != '0'){
int l = s.length();
pic[s[0]-'a'][s[l-1]-'a'] = 1;
}else{
for(int k = 0; k <= 26; k++){
for(int i = 0; i <= 26; i++){
if(pic[i][k]){
for(int j = 0; j <= 26; j++){
if(pic[k][j])
pic[i][j] = 1;
}
}
}
}
if(pic[1][12]) cout << "Yes." << endl;
else cout << "No." << endl;
memset(pic, 0, sizeof(pic));
}
}
return 0;
}