hdu 2181 哈密顿绕行世界问题,深度优先搜索求解
来源:互联网 发布:源码网easck 编辑:程序博客网 时间:2024/04/28 18:25
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 1bool 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;}
- hdu 2181 哈密顿绕行世界问题,深度优先搜索求解
- HDU 2181 哈密顿绕行世界问题(DFS 深度优先搜素)
- hdu 2181 哈密顿绕行世界问题 - 搜索
- HDU 2181 哈密顿绕行世界问题(搜索)
- HDU ACM 2181 哈密顿绕行世界问题->DFS(深度有限搜索)
- HDU 2181 哈密顿绕行世界问题
- hdu 2181 哈密顿绕行世界问题
- hdu 2181 哈密顿绕行世界问题
- HDU 2181 哈密顿绕行世界问题
- hdu 2181 哈密顿绕行世界问题
- HDU 2181 哈密顿绕行世界问题
- HDU-2181-哈密顿绕行世界问题
- HDU 2181 哈密顿绕行世界问题
- hdu 2181 哈密顿绕行世界问题
- HDU 2181 哈密顿绕行世界问题
- hdu 2181 哈密顿绕行世界问题
- hdu 2181 哈密顿绕行世界问题
- hdu 2181 哈密顿绕行世界问题
- 选择器
- HDU 3333 Turing Tree 线段树 or 树状数组
- 引用页_初学Java:仿写记事本_Find.java
- Linux设备驱动--块设备(一)之概念和框架
- 基于DOM的XML文档读写
- hdu 2181 哈密顿绕行世界问题,深度优先搜索求解
- wxPython实现的画图板
- Struts2中struts.xml的Action配置详解
- ORACLE之常用FAQ V1.0
- Oracle常见面试题整理一(10级学员 郞志整理)
- Hibernate generator 详解
- 第五周任务三
- Vim Common Command
- 引用页_初学Java:仿写记事本_GoDialog.java