DFS专攻:HDU 2128 哈密顿绕行世界问题

原创 2013年12月04日 22:02:06

又一道需要DFS回溯的好题,比较简单,不过现在也正好用来练习DFS,等把简单的都弄会了,再搞难的……GO ON!!!

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<string>
#include<cmath>
#include<set>
#include<vector>
#include<stack>
#include<ctime>
#include<cstdlib>
#define mem(a,b) memset(a,b,sizeof(a))
typedef long long ll;
using namespace std;
char a[22][4],d[22],visit[22],m,k;   //a存路径,d存搜索过程的路径,以便输出,visit标记哪条路走过了……
void dfs(int j,int t)
{
    d[t]=j;
    visit[j]=1;
    if(t==20&&(a[j][1]==m||a[j][2]==m||a[j][3]==m))
    {
        d[t+1]=m;
        printf("%d: ",k++);
        for(int i=1;i<=21;i++)
            printf(" %d",d[i]);
        printf("\n");
    }
    for(int i=1;i<=3;i++)
    {
        if(!visit[a[j][i]])
        {
            visit[a[j][i]]=1;
            dfs(a[j][i],t+1);
            visit[a[j][i]]=0;   //回溯,以便下次能使用这条路
        }
    }
}
int main()
{
    for(int i=1;i<=20;i++)
        scanf("%d%d%d",&a[i][1],&a[i][2],&a[i][3]);
    while(scanf("%d",&m)&&m)
    {
        mem(d,0);
        mem(visit,0);
        k=1;
        dfs(m,1);
    }
    return 0;
}


(step4.3.8)hdu 2181(哈密顿绕行世界问题——DFS)

题目大意:通俗点讲就是,输出所有从m城市出发,便利所有城市之后又能回到m城市的序列...... 解题思路:DFS 1)用map[][]来存储城市之间的连通情况.用used[]存储某个城市的...
  • caihongshijie6
  • caihongshijie6
  • 2013年08月22日 15:28
  • 1069

从哈密尔顿路径谈NP问题

1859年,爱尔兰数学家哈密尔顿(Hamilton)提出下列周游世界的游戏:在正十二面体的二十个顶点上依次标记伦敦、巴黎、莫斯科等世界著名大城市,正十二面体的棱表示连接这些城市的路线。试问能否在图中做...
  • baimafujinji
  • baimafujinji
  • 2015年11月06日 21:01
  • 8355

ACM搜索之哈密顿绕行世界问题——hdu2181

哈密顿绕行世界问题 Problem Description 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市。 Inp...
  • lx417147512
  • lx417147512
  • 2014年03月27日 15:13
  • 1084

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

哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota...
  • khn64
  • khn64
  • 2017年07月29日 20:57
  • 84

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

Problem Description 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市。    Input 前20行的第i行...
  • qq_36782366
  • qq_36782366
  • 2017年07月08日 12:08
  • 97

DFS深度优先搜索(3)--hdu2181(哈密顿绕行世界问题)(基础题)

哈密顿绕行世界问题                                 Time Limit:1000MS    Memory Limit:32768KB    64bit IO F...
  • Acmer_Sly
  • Acmer_Sly
  • 2016年09月24日 21:14
  • 258

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

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

HDU - 2181 哈密顿绕行世界问题(简单dfs)

一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市。 简单的dfs,注意输出路径的处理。...
  • qq_18738333
  • qq_18738333
  • 2015年10月23日 01:28
  • 372

hdu 2181 哈密顿绕行世界问题 ——dfs

题目: F - 哈密顿绕行世界问题 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submi...
  • a894383755
  • a894383755
  • 2016年04月23日 08:20
  • 202

HDU 哈密顿绕行世界问题(dfs)

哈密顿绕行世界问题 Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...
  • zlj17839192925
  • zlj17839192925
  • 2016年04月22日 14:51
  • 189
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DFS专攻:HDU 2128 哈密顿绕行世界问题
举报原因:
原因补充:

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