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

HDU ACM 2181 哈密顿绕行世界问题->DFS(深度有限搜索)

时间:2015-05-13 14:45:50      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:c   c++   acm   算法   搜索   

分析:DFS即可。

#include<iostream>
using namespace std;

bool map[21][21];
bool vis[21];
int ans[21],num,m;

void init()
{
	int i,a;

	memset(map,false,sizeof(map));
	for(i=1;i<=20;i++)           //构图
	{
		map[i][cin>>a,a]=true;
		map[i][cin>>a,a]=true;
		map[i][cin>>a,a]=true;
	}
}

void dfs(int d,int x,int s)
{
	int i;

	ans[d]=x;
	if(d==19)
	{
		if(!map[x][m]) return ;
		cout<<++num<<": ";
		for(i=0;i<=d;i++)
			cout<<" "<<ans[i];
		cout<<" "<<ans[0]<<endl;
		return ;
	}
	for(i=1;i<=20;i++)
		if(map[x][i] && !vis[i])
		{
			vis[i]=true;
			dfs(d+1,i,s);
			vis[i]=false;
		}
}

int main()
{
	ios::sync_with_stdio(false);
	init();
	while(cin>>m && m)
	{
		memset(vis,false,sizeof(vis));
		num=0;
		vis[m]=true;
		dfs(0,m,m);
	}
    return 0;
}


HDU ACM 2181 哈密顿绕行世界问题->DFS(深度有限搜索)

标签:c   c++   acm   算法   搜索   

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

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