回溯法_TSp
来源:互联网 发布:端口转发 8283被禁止 编辑:程序博客网 时间:2024/06/06 01:08
这个代码很乱,没来得及简化,
#include<iostream>
#define MAX 1000
#define N 5
using namespace std;
int BOUND=100;
void main()
{
int path[N][N]=
{
{MAX,3,3,2,6},
{3,MAX,7,3,2},
{3,7,MAX,2,5},
{2,3,2,MAX,3},
{6,2,5,3,MAX}
};
int Init=0;
int i=0;
int flag[N]={1,-1,-1,-1,-1};
int array[N+1]={0,-1,-1,-1,-1,-1};
int YY[N]={0,0,0,0,0};
int YY_num=MAX;
int k[N]={0,0,0,0,0};
int total=0;
while(i>=0)
{
while(k[i]<N)
{
if(path[array[i]][k[i]]<BOUND && flag[k[i]]==-1 &&total<BOUND)
{
flag[k[i]]=1;
total=total+path[array[i]][k[i]];
i=i+1;
array[i]=k[i-1];
int pp=0;
while(array[pp]>=0)
{
pp++;
}
if(pp==N)
{
if(total<YY_num)
{
for(int t=0;t<N;t++)
{
YY[t]=array[t];
}
YY_num=total;
}
//cout<<'\t'<<total;
// cout<<endl;
BOUND=total;
break;
}
}
else
{
k[i]=k[i]+1;
}
}
total=total-path[array[i-1]][array[i]];
flag[array[i]]=-1;
array[i]=-1;
k[i]=0;
i=i-1;
k[i]=k[i]+1;
}
for(int r=0;r<N;r++)
cout<<YY[r]<<",";
cout<<'\t'<<YY_num;
}
- 回溯法_TSp
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- 回溯法
- mysql之视图详解
- JS-异常处理
- iOS学习笔记-开发中APP跳转
- Android Studio添加assets文件夹
- form表单序列化时获取不到未选中checkbox问题
- 回溯法_TSp
- [bzoj 1607] [Usaco2008 Dec]Patting Heads 轻拍牛头 筛数
- MySql数据库详解
- Spring中的事务控制
- CentOS7下安装tomcat-7.0.59
- 指令操作码与地址码
- 初识Android进程间通信之---Messenger
- ArrayList和LinkedList
- UGUI研究院之全面理解图集与使用(三)