HDU ACM 1181 变形课

使用深度优先搜索解决,很简单的题。

建立26个字母的邻接矩阵图和访问数组,,从字母b开始搜索,若能到达字母m则可以变形。

#include<iostream> using namespace std;int v[27];int m[27][27];bool dfs(int x){if(x=='m'-'a')//搜到字母m结束return true;for(int i=0;i<26;i++){if(m[x][i]==1 && !v[i]){v[i]=1;if(dfs(i)) return true;//搜到(到达)就结束v[i]=0;}}return false;} int main() { char a[101];while(scanf("%s",a)==1 && a[0]!='0'){m[a[0]-'a'][a[strlen(a)-1]-'a']=1;while(scanf("%s",a)==1 && a[0]!='0')m[a[0]-'a'][a[strlen(a)-1]-'a']=1;if(dfs('b'-'a'))//从字母b开始搜索cout<<"Yes."<<endl;elsecout<<"No."<<endl;}return 0; }

只要有信心,人永远不会挫败

HDU ACM 1181 变形课

相关文章:

你感兴趣的文章:

标签云: