题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2181

题意很容易理解,dfs就可以了

  1. #include <iostream>
  2. #include <stdio.h>
  3. #include <string.h>
  4. #include <algorithm>
  5. #include <stdlib.h>
  6. #include <queue>
  7. #include <map>
  8. #include <vector>
  9.  
  10. using namespace std;
  11.  
  12. typedef long long LL;
  13.  
  14. #define met(a, b) memset(a, b, sizeof(a))
  15. #define INF 0x3f3f3f3f
  16. #define N 25
  17.  
  18. int G[N][N], A[N], vis[N], t;
  19.  
  20. void dfs(int s, int k)
  21. {
  22. if(k == )
  23. {
  24. if( G[A[]][A[]] )
  25. {
  26. A[] = A[];
  27.  
  28. printf("%d: ", t++);
  29.  
  30. for(int i=; i<=; i++)
  31. printf(" %d", A[i]);
  32.  
  33. printf("\n");
  34. }
  35. return;
  36. }
  37. for(int i=; i<=; i++)
  38. {
  39. if( G[s][i] && !vis[i])
  40. {
  41. A[k] = i;
  42.  
  43. vis[i] = ;
  44.  
  45. dfs(i, k+);
  46.  
  47. vis[i] = ;
  48. }
  49. }
  50. }
  51.  
  52. int main()
  53. {
  54. int a, b, c, m;
  55.  
  56. met(G, );
  57.  
  58. for(int i=; i<=; i++)
  59. {
  60. scanf("%d %d %d", &a, &b, &c);
  61.  
  62. G[i][a] = G[i][b] = G[i][c] = ;
  63. }
  64.  
  65. while(scanf("%d", &m), m)
  66. {
  67. t = ;
  68.  
  69. met(vis, );
  70.  
  71. met(A, );
  72.  
  73. A[] = m;
  74.  
  75. vis[m] = ;
  76.  
  77. dfs(m, );
  78. }
  79. return ;
  80. }

哈密顿绕行世界问题---hdu2181(全排列问题)的更多相关文章

  1. 哈密顿绕行世界问题 HDU2181

    题目大意都比较简单,用vector存一下图,然后爆搜就可以了. #include<bits/stdc++.h> using namespace std; ; vector<]; bo ...

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

    哈密顿绕行世界问题 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Sub ...

  3. 哈密顿绕行世界问题(hdu2181)

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

  4. Hdu2181 哈密顿绕行世界问题 2017-01-18 14:46 45人阅读 评论(0) 收藏

    哈密顿绕行世界问题 Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Sub ...

  5. HDU2181 哈密顿绕行世界问题 —— DFS

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2181 哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others) ...

  6. 【HDU - 2181】哈密顿绕行世界问题(dfs+回溯)

    -->哈密顿绕行世界问题 Descriptions: 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市.  Input 前2 ...

  7. HDU 2181 哈密顿绕行世界问题(经典DFS+回溯)

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

  8. HDOJ 2181 哈密顿绕行世界问题

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

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

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

随机推荐

  1. 基于HTML5 Canvas 实现的 Loading 效果

    Sonic.js 是一个很小的 JavaScript 类,用于创建基于 HTML5 画布的加载图像.更强大的是 Sonic.js 还提供了基于现成的例子的创建工具,可以帮助你实现更多自定义的(Load ...

  2. git clone 故障 fatal could not create work tree dir

    问题如上图,原因是openWRT目录权限的问题,该目录是新创建的查看目录权限后发现该目录只对root有读写权限,对所有者及其他用户无读写权限.最简单的chmod 777 openWRT即可解决问题.

  3. 一种基于匹配回朔的 css3 选择器引擎实现

    介绍 CSS 选择器是一种应用于 DOM 节点查找场景的特定微型语法, 本质上和正则表达式一样都是一种模式匹配语言,灵活使用可以方便得获取指定位置的节点集合. 目前 W3C 推荐标准为 Selecto ...

  4. C++ 函数的扩展①

    //函数扩展--内联函数 inline #include<iostream> using namespace std; /* c++中const常量可以替代宏常数定义 如: const i ...

  5. google cloud之查看任务任务过程

    点击侧边栏的logging

  6. SSH学习三 SESSION

    一.session方法 Session:由同一个IE窗体向同一个WEBAPP发的全部请求的总称,一个会话 同一个会话的多个额请求能够从前到后多个请求.??祖给孙.孙不给祖 浏览器:搜集sessionI ...

  7. WORD里怎样能做到局部“分栏”就是一页里有的分有的不分

    选中你要分的部分再分栏如果不想分的部分也被分了,那就可以选中不想分的那部分,选择“分栏”->“一栏” 转自:http://zhidao.baidu.com/question/9873268.ht ...

  8. 去掉if

    修改前 namespace CleanCSharp.Methods.Dirty {     class BooleanSwitchingArgumentsExample     {         p ...

  9. UDP传输原理及数据分片——学习笔记

    TCP传输可靠性是:TCP协议里自己做了设计来保证可靠性. IP报文本身是不可靠的 UDP也是 TCP做了很多复杂的协议设计,来保证可靠性. TCP 面向连接,三次握手,四次挥手 拥塞机制 重传机制 ...

  10. 怎样使用DWZ?

    首先说明,这篇文章不是解说DWZ内部实现原理的,也不打算分析它的源代码,这里仅仅是演示一下,怎样将DWZ框架整合到项目中去. 刚刚过去的项目中,前台UI使用的是DWZ.因为之前项目的开发环境都已经搭建 ...