好吧,没什么难度的,只是要注意那个 ‘0’ 的判断我用了控制台函数……这个不会的可以去查资料,百度之,谷歌之……
/* THE PROGRAM IS MADE BY PYY */
/*----------------------------------------------------------------------------//
Copyright (c) 2011 panyanyany All rights reserved.
URL : http://acm.hdu.edu.cn/showproblem.php?pid=2181
Name : 2181 哈密顿绕行世界问题
Date :Friday,August 12,2011
Time Stage : 1 hours around
Result:
4400410 2011-08-12 21:04:56 Accepted 2181 0MS 192K 1475 B C++ pyy
Test Data:
Review:
//----------------------------------------------------------------------------*/
#include <stdio.h>
#include <string.h>
#define max(a, b) (((a) > (b)) ? (a) : (b))
#define min(a, b) (((a) < (b)) ? (a) : (b))
#define infinity 0x7f7f7f7f
#define minus_inf 0x80808080
#define MAXSIZE 21
int way, m ;
int city[MAXSIZE][3], route[MAXSIZE], used[MAXSIZE] ;
void dfs (int c, int cnt)
{
int i ;
route[cnt] = c ;
if (c == m && cnt == 20)
{
printf ("%d: %d ", way++, m) ;
for (i = 1 ; i < 20 ; ++i)
printf ("%d ", route[i]) ;
printf ("%d\n", route[i]) ;
}
for (i = 0 ; i < 3 ; ++i)
{
if (!used[city[c][i]])
{
used[city[c][i]] = 1 ;
dfs (city[c][i], cnt + 1) ;
used[city[c][i]] = 0 ;
}
}
}
int main ()
{
char c ;
int i ;
while (1)
{
c = getc (stdin) ; // 从输入流中提取一个字符
if (c == '0')
break ;
ungetc (c, stdin) ; // 把这个字符还回去
for (i = 1 ; i <= 20 ; ++i)
scanf ("%d%d%d", &city[i][0], &city[i][1], &city[i][2]) ;
scanf ("%d", &m) ;
memset (used, 0, sizeof (used)) ;
way = 1 ;
for (i = 0 ; i < 3 ; ++i)
{
used[city[m][i]] = 1 ;
dfs (city[m][i], 1) ;
used[city[m][i]] = 0 ;
}
getchar () ; // 别忘了吃掉一个多余的回车键
}
return 0 ;
}
分享到:
相关推荐
哈工大算法实验三,搜索算法(哈密顿环问题)求解哈密顿环 1.实现基于树的深度优先搜索算法,求解哈密顿环问题 2.实现哈密顿环的爬山法 3.有界面源代码和实验报告!均为自己所做,正确运行。报告中还有用Excel表分析...
哈密顿回路问题 算法设计与分析 回溯法
哈密顿问题是一种著名的组合优化问题,源自物理中的哈密顿回路,它要求找到一个图中的闭合路径,使得路径经过每个顶点恰好一次,并返回起点,且路径上的边权之和最小或最大。这个问题在图论、运筹学和计算机科学中...
这种路径称为哈密顿回路,而寻找这样的路径在很多实际问题中都有应用,如旅行商问题、物流配送路线优化等。 在C语言中实现最短哈密顿回路算法通常需要结合图的表示方法和搜索算法。一种常见的图表示方法是邻接矩阵...
在实际问题中,例如旅行商问题,寻找最短的哈密顿回路具有很高的实用价值。回溯法是一种解决问题的有效策略,尤其适用于解决这类组合优化问题。 在这个“哈密顿回路 回溯法——C++代码”的项目中,我们看到的是使用...
MIPS汇编语言解决哈密顿回路问题。深度优先搜索,非递归方法。
哈密顿回路问题 哈密顿回路问题是计算机科学和数学领域中一个著名的NP完全问题,旨在解决在一个给定的网络中,是否存在一条路径,穿过所有的顶点恰好一次,然后回到出发点的路径问题。 在哈密顿回路问题中,需要...
此外,完整约束体系的哈密顿力学-勒让德变换还可以应用于解决各种实际问题,如计算机模拟、优化问题、控制理论等。通过哈密顿量,我们可以描述系统的运动和演化过程,从而解决实际问题。 完整约束体系的哈密顿力学-...
在图论领域中,无向完全图的哈密顿回路问题是一个经典且重要的问题。要深入探讨这个问题,首先我们需要了解几个基本概念。 图论是数学的一个分支,主要研究的是由点(顶点)和线(边)组成的网络结构。在图论中,图...
在哈密顿回路问题上,贪心策略可能是每次选择未访问过的顶点中与当前顶点距离最近的一个,试图构建一个较短的回路。然而,这种方法无法保证总是找到最短的哈密顿回路,因为贪心选择性质不一定能传递到最后得到全局最...
1. 通过贪心算法对可以回到起点的环游解——哈密顿回路 进行了优化。当棋盘规模小于12时,能够迅速给出任意一个节点的一条哈密顿解 2. 若不要求回到起点最大规模可达60 3. 可以自定义是否回到起点,棋盘规模以及是否...
在第五章中,文章讨论了广义哈密顿扰动系统的周期轨道与同宿轨道的问题,周期轨道的存在性和同宿轨道分枝的计算等,都是描述系统长期行为的关键因素。 最后一章涉及理论的应用,作者通过一系列例子,比如平面三个...
哈密顿路径问题在图论领域中是一个经典且复杂的问题,它源于19世纪数学家威廉·哈密顿提出的一个挑战。哈密顿路径是指在一个无向图中找到一条从某顶点出发并经过所有其他顶点恰好一次,最后回到起点的路径。这个问题...
最佳哈密顿圈问题是在给定一个带权完全图的情况下,寻找一个总权重最小的哈密顿圈。这个问题属于NP完全问题,即它没有已知的多项式时间解决方案,但在实际应用中,可以通过各种启发式算法找到近似最优解。本文将详细...
【哈密顿圈问题】 对于一个有向图G=(V,E),如果G中的圈C恰好经过每一个顶点一次,则称圈C是一个哈密顿圈。即,哈密顿圈构成一条经过所有的顶点,没有重复的“路线”。如图6是一个含有哈密顿圈的图。 图6 一个含有...
《基于MATLAB的哈密顿回路算法与模拟退火在TSP问题中的应用》 在计算机科学领域,旅行商问题(Travelling Salesman Problem, TSP)是一类著名的组合优化问题,它询问最短可能的路径,使得一个旅行商能够访问每个...
哈密顿性质是图论中的一个经典问题,它在理论计算机科学中有广泛的应用。 本研究将埃及金字塔的形状作为模型设计出了一类金字塔图,进而分为了平面金字塔图和立体多面金字塔图两种类型。研究重点是探究这类图形是否...
哈密顿图判断 输入一个具有n个顶点的无向图G,判断G是否有哈密尔顿回路。(哈密顿回路问题,建议使用递归解决)