hdu 2181 哈密顿绕行世界问题,深度优先搜索求解

原创 2012年03月22日 20:16:34

http://acm.hdu.edu.cn/showproblem.php?pid=2181

        这是我写的第一个博客,仅作为参考,大牛们见了不要见笑哈。

        本题首先就是要建立一个城市连接的地图,然后从起始位置开始深度优先遍历每一个城市找个满足条件的路径,给以打印。用以存储地图的开辟一个二维数组。其他基本比较简单。详细看下面的代码:

#include <stdio.h>
#include <string.h>

#define MAX 21
#define bool int
#define false 0
#define true 1

bool map[MAX][MAX];//实心体地图
bool used[MAX];//标记城市走过

int res[MAX];//保存当前走过的路径

int num;//记录打印到了第几个
int cas;

void init()
{
	int a, b, c, i;
	for(i = 1; i <= 20; ++ i){
		scanf("%d%d%d",&a, &b, &c);
		map[i][a] = true;
		map[i][b] = true;
		map[i][c] = true;
	}
}

void dfs(int dep, int count)
{
	int i, j;
	res[count] = dep;
	if(count == 19){
		if(map[dep][cas]){
			printf("%d:  ", ++ num);
			for(i = 0; i < 20; ++ i){
				printf("%d ", res[i]);
			}
			printf("%d\n", res[0]);
		}
		return;
	}
	for(j = 1; j <= 20; j ++){
		if(map[dep][j] && !used[j]){
			used[j] = true;
			dfs(j, count+1);
			used[j] = false;
		}
	}
}

int main()
{
/*	freopen("input.txt","r+",stdin);
	freopen("output.txt","w+",stdout);*/
	memset(map,0,sizeof(map));
	init();
	while(scanf("%d",&cas), cas){
		num = 0 ;
		memset(used, false, sizeof(used));
		memset(res, 0, sizeof(res));
		used[cas] = true;
		dfs(cas, 0);
	}
	return 0;
}


哈密顿绕行世界问题

Problem Description 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市。   Input ...

HDU-2181 哈密顿绕行世界问题

题目: http://acm.hdu.edu.cn/showproblem.php?pid=2181 题意: TSP问题,20个城市,每个城市与三个城市相连,输出从某个城市开始遍历所有城市的所有...
  • kopyh
  • kopyh
  • 2015年09月25日 22:16
  • 487

HDU2181:哈密顿绕行世界问题(DFS)

Problem Description 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市。    Input 前2...

HDU2181 哈密顿绕行世界问题 dfs

哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota...

HDU2181---哈密顿绕行世界问题

#include #include using namespace std; int map[25][4],vis[25],des[25]; int n,cas=1; void dfs(int no...

HDU 2181 哈密顿绕行世界问题

简单的搜索题#include #include #include using namespace std; #define N 30 int vis[N][N]; int t[N]; int num[...

HDU 2181 哈密顿绕行世界问题(水DFS)

该题乍看很难的样子,其实就是个水DFS,因为要打印所有可能方案,所以无法剪枝,直接遍历所有可能情况就行。 细节参见代码: #include #include #include #include #...

HDU 2181

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2181 简单的DFS。。直接标记+递归求解即可 下面是AC代码: #include #include...
  • w00w12l
  • w00w12l
  • 2012年08月22日 21:16
  • 882

HDU 2181 哈密顿绕行世界问题 (求一个图的所有哈密顿回路)

HDU 2181 哈密顿绕行世界问题 (求一个图的所有哈密顿回路)

hdu(2181):哈密顿绕行世界问题,dfs遍历

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2181 此题真的是一个水题,当然也只有这种题目才给了我前进的动力,要是一直被各种打压,岂不得累死! ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:hdu 2181 哈密顿绕行世界问题,深度优先搜索求解
举报原因:
原因补充:

(最多只允许输入30个字)