请大家帮我看看这个有什么问题,回溯法求哈密顿回路
#include <iostream>using namespace std;
void Hamiton(int x[],int n,int **arc)//x表示顶点
{
int i,k;
int visited;//visited[]标记数组
for (i=0;i<n;i++)
{
x=0;
visited=0;
}
x=0;visited=1;//开始从顶点0出发
k=1;
while(k>=1)
{
x=x+1;//搜索下一顶点
while(x<n)
{
if(visited]==0 &&arc]]==1)
break;//未经过x这个城市,且城市x到城市x有路径
else
x=x+1;
}
if(x<n && k==n-1 && arc]==1)
{//数组x已经形成哈密顿回路,输出数组
cout<<"路径为:";
for(k=0;k<n;k++)
cout<<x+1<<" ";//输出顶点编号,从一开始
return;
}
/*else
{
cout<<"哈密顿回路不存在!"<<endl;
return;
}*/
if(x<n && k<n-1)//数组构成哈密顿回路的部分解
{
visited]=1;
k=k+1;
}
else //回溯
{
visited]=0;
x=0;
k=k-1;
}
}
}
int main()
{
int n;
cout<<"请输入城市数 ";
cin>>n;
int *x=new int;//定义数组x存储哈密图回路上的顶点
cout<<"输入代价矩阵:"<<endl;
//建立图的代价矩阵
int **arc=new int*;
for(int i=0;i<n;i++)
arc=new int;
//赋值
for(i=0;i<n;i++)
{
for(int j=0;j<n;j++)
cin>>arc;
}
Hamiton(x,n,arc);
return 0;
} 楼主求助应该明确需要解决的问题,否则,把 Windows 10 的整套源码丢给你,让你找出问题,你不头大吗? jackz007 发表于 2019-5-15 11:45
楼主求助应该明确需要解决的问题,否则,把 Windows 10 的整套源码丢给你,让你找出问题,你不头大吗 ...
数组x不能形成哈密顿回路,执行没有结果。
不知道是不是哪里逻辑出了错误 本帖最后由 jackz007 于 2019-5-15 12:24 编辑
西周 发表于 2019-5-15 11:49
数组x不能形成哈密顿回路,执行没有结果。
不知道是不是哪里逻辑出了错误
"哈密顿回路" 估计没有几个人能懂,毕竟隔行如隔山,楼主应该给出样例,比如,输入什么,预期得到什么,现在得到了什么。。。以突出问题所在。
页:
[1]