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

题解:深搜,难点就是判断回到原点的问题,每个城市的下一次旅行地点用一张表保存,走过的城市标记一下,递归出口就是他回到原点的时候。由于要输出路径,用一个数组纪录合法答案,并搜索的时候更新它。字典序的问题就把每个城市下一次走的地点排下序就行。

AC代码如下:

#include
using namespace std;

int city[21][3],book[21],answer[22],n,k;

void dfs(int a,int len)
{
	int i,xia;
	if(a==n && len==22)
	{
		printf("%d:  ",k++);
		for(i=1;i<=20;i++)
			printf("%d ",answer[i]);
		cout<


你可能感兴趣的:(DFS)