[問題] TSP問題
int main(){
...
TSP(0,0,0);
printf("ANSWER=%d\n",ans);
...
}
void TSP(int d, int now,int mask)
{
if (d == NODENUM-1) //假如每個城市皆已走過,NODENUM為城市個數
{
if (dp[now][mask] + dd(now,0) > ans)
{
ans = dp[now][mask] + dd(now, 0); //ans即為走過的距離,求最大值
}
return;
}
for (int i=1,mm=1; i<=(NODENUM-1);++i,mm<<=1) {
if (!(mask & mm)){
if (dp[now][mask] + dd(now, i) > dp[i][mask | mm])
{
dp[i][mask | mm] = dp[now][mask] + dd(now, i);
TSP(d+1, i, mask | mm);
}
}
}
}
int dd(int i, int j)
{
return tsp_type2[i][j]; //城市i到城市j之間的距離
}
小弟不才,麻煩各位高手幫忙一下~~
以下是問題所在:
編譯器用dev-c++ 4.9.9.2 在 NODENUM > 10 程式會被windows中止掉,
換用visual c++ 6.0 則不會被中止而正常運作,但偶而會出現問題 ans=0。
經過測試發現問題出在這個TSP function。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.116.163.118
※ 編輯: torck 來自: 140.116.163.118 (10/14 18:03)
推
10/14 20:42, , 1F
10/14 20:42, 1F
→
10/14 20:52, , 2F
10/14 20:52, 2F
推
10/14 20:59, , 3F
10/14 20:59, 3F
→
10/14 20:59, , 4F
10/14 20:59, 4F
推
10/14 21:04, , 5F
10/14 21:04, 5F
推
10/14 21:24, , 6F
10/14 21:24, 6F
→
10/14 21:24, , 7F
10/14 21:24, 7F
→
10/14 21:31, , 8F
10/14 21:31, 8F
→
10/14 21:33, , 9F
10/14 21:33, 9F
※ 編輯: torck 來自: 140.116.163.118 (10/14 21:34)
推
10/14 21:54, , 10F
10/14 21:54, 10F
推
10/14 22:14, , 11F
10/14 22:14, 11F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章