我试图开发一个代码来解决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,而不是有效解决旅行商问题。 –