码迷,mamicode.com
首页 > 其他好文 > 详细

HDU ACM 1181 变形课

时间:2015-03-14 20:06:59      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:acm   算法   dfs   编程   深度优先搜索   

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

建立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;
		else 
			cout<<"No."<<endl;
	}
    return 0;  
}



HDU ACM 1181 变形课

标签:acm   算法   dfs   编程   深度优先搜索   

原文地址:http://blog.csdn.net/a809146548/article/details/44262387

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!