哈密爾頓迴路 C

2021-06-21 10:05:02 字數 2251 閱讀 4636

突然記起來我大二寫了個哈密爾頓迴路..於是共享之...

/**任務:求出全部的哈密爾頓迴路

完成感想:根據乙個**的演算法寫的,如果有高手可以提出改進的話,請發郵件到我的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座橋將...