我試圖開發一個代碼來解決C中的旅行推銷員問題,但我有一些限制:我只能使用「for」,而「,」做「,數組,矩陣簡單之類的東西,所以,無功能或遞歸(不幸)生成所有可能的排列在C
到目前爲止,我已經得到了什麼:
用戶將將輸入城市座標x和y是這樣的:
8.15 1.58
9.06 9.71
1.27 9.57
9.13 4.85
存儲座標的代碼。
float city[4][2];
int i;
for (i=0; i<4; i++)
scanf("%f %f", &cidade[i][0], &cidade[i][1]);
有4個城市,所以「i」從0到3.X和Y存儲在矩陣[0]和[1]的第二維上。
現在的問題是我必須生成矩陣的第一維的所有可能的排列。這似乎很容易與4個城市,因爲所有可能的路線(它必須始於城市A每次):
A B C D
A B D C
A C B D
A C D B
A D C B
A D B C
但我將不得不擴展它的10個城市。人們告訴我,它會使用9個福爾循環,但我不能夠發展它=(
有人可以給我一個想法?
「無功能」得到什麼?一個非常愚蠢的騙子straint。通過暴力解決旅行商問題也是如此。 –
您將如何爲10個城市生成所有1長組合?一個產生所有城市的for-loop。現在,對於兩個城市來說,這是一個超過10個城市的循環,以獲得第一個城市,每個「第一個」城市在其他城市循環獲得第二個城市組合。長達3年的時間裏,每個城市的10個城市都是其他城市的2長組合......等等,最多10 –
@EugeneSh,這是一項任務。重點在於寫C,而不是有效解決旅行商問題。 –