突然記起來我大二寫了個哈密爾頓迴路..於是共享之...
/**任務:求出全部的哈密爾頓迴路
完成感想:根據乙個**的演算法寫的,如果有高手可以提出改進的話,請發郵件到我的qq 409169964
ps;中國的**好多都是抄來抄去,只是名字改了...
*/#include #include #include #include #include using namespace std;
struct hami
;hami arr[10][10];
hami m[10][10];
hami temp[10][10];
void hami(int );
int main ()
int row;
fin>>row;
string str[10][10];
string input;
for(int i=0;i>input;
if(input=="0")
else
}} for(int i=0;i::iterator it1=temp[i][j].path.begin();
vector::iterator end1;
for(it1;it1!=temp[i][j].path.end();)
else
}temp[i][j].path.push_back(tt);
it1=temp[i][j].path.begin();
end1=temp[i][j].path.end();
int number=0;
for(it1;it1!=end1;it1++)
if(number>1)
else
real=true;
continue;
}else if(k==(row-1)&&arr[i][f].path[0][0]==*jj)
else
}
temp[i][j].path.push_back(tt);
vector::iterator it2=temp[i][j].path.begin();
vector::iterator end2=temp[i][j].path.end();
int number=0;
for(it2;it2!=end2;it2++)
if(number>1)
else
real=true;
continue;}}
else if(arr[i][f].whether==true&&m[f][j].whether==false)
vector::iterator it3=arr[i][f].path.begin();
for(it3;it3!=arr[i][f].path.end();it3++)
}temp[i][j].path.push_back(tt);
real=true;
vector::iterator it4=temp[i][j].path.begin();
vector::iterator end4=temp[i][j].path.end();
int number=0;
for(it4;it4!=end4;it4++)
if(number>1)
else
}else if(k==(row-1)&&(*it3)[0]==*jj)
if(number>1)
else
}
}}
}if(real==false)
else}}
} for(int i=0;i::iterator beg7=arr[i][j].path.begin();
vector::iterator end7=arr[i][j].path.end();
arr[i][j].path.erase(beg7,end7);
vector::iterator it7=temp[i][j].path.begin();
for(it7;it7!=temp[i][j].path.end();it7++)
else}}
} for(int i=0;i::iterator it=temp[i][i].path.begin();
for(it;it!=temp[i][i].path.end();it++)
{cout<
。。好久以前寫的...
輸出圖的全部hamiltonian迴路的新演算法
可以看這篇文章,寫得不錯
哈密爾頓迴路
include define maxn 1000 using namespace std int n,nex maxn 3 mp maxn 3 maxn 3 n個點,nex存路徑,mp鄰接陣 bool expend int s else 若y的nex陣列未更新 1 當前x未更新nex陣列就把x的ne...
哈密爾頓道路與哈密爾頓迴路
簡介 1857年愛爾蘭數學家哈密爾頓發明了 周遊世界 玩具,用乙個正十二面體的20個頂點表示世界上20個大城市,30條稜代表這些城市之間的道路。要求遊戲者從任意乙個城市 即頂點 出發,延稜行走經過每個城市一次且只經過一次,最終返回出發地。哈密爾頓將此問題稱為周遊世界問題,並且作了肯定的回答。以下是一...
「尤拉迴路」與「哈密爾頓迴路」
尤拉迴路 與 哈密爾頓迴路 1 尤拉迴路 17世紀的東普魯士有一座哥尼斯堡 konigsberg 城 現為 的加里寧格勒 kaliningrad 城 城中有一座奈佛夫 kneiphof 島,普雷格爾 pregol 河的兩條支流環繞其旁,並將整個城市分成北區 東區 南區和島區4個區域,全城共有7座橋將...