gpt4 book ai didi

c - 在 C 中生成所有可能的排列

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:18:34 25 4
gpt4 key购买 nike

我正在尝试开发一个代码来解决 C 中的旅行商问题,但我有一些限制:我只能使用“for”、“while”、“do”、数组、矩阵和类似的简单东西,所以,没有函数或递归(不幸的是)。

到目前为止我得到了什么:

用户将像这样输入城市坐标 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 个嵌套的 foor 循环,但我无法开发它 =(

有人可以给我一个想法吗?

最佳答案

扩展到 10(并查找城市名称)作为读者的练习。这很可怕,但这就是你教授的局限性所带来的结果

#include <stdio.h>

int main(void) {
for (int one = 0; one < 4; one++) {
for (int two = 0; two < 4; two++) {
if (two != one) {
for (int three = 0; three < 4; three++) {
if (one != three && two != three) {
for (int four = 0; four < 4; four++)
if (one != four && two != four && three != four) {
printf("%d %d %d %d\n", one, two, three, four);
}
}
}
}
}
}
return 0;

}

关于c - 在 C 中生成所有可能的排列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37212334/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com