|  | 
 
 发表于 2019-12-1 18:39:58
|
显示全部楼层
   本楼为最佳答案 
| 看题目描述这道题不是让求最优路径,星星的个数和顺序都是自行输入进行设定的。按照输入星星的顺序,每次累加与上一个星星的距离即可。 两颗星星的距离是:行差+列差 (行差列差都取绝对值)。因为没看到原题,这是参考代码。
 
 复制代码#include <stdio.h>
#include <math.h>
int main(void)
{
    int x0, y0, x, y;
    int i, count, sum = 0;
    printf("输入初始位置 x,y : ");
    scanf("%d,%d", &x0, &y0);
    printf("输入星星的个数: ");
    scanf("%d", &count);
    for (i = 1; i <= count; i++) {
        printf("输入第 %d 个星星的位置 x,y : ", i);  //半角逗号分隔
        scanf("%d,%d", &x, &y);
        sum += abs(x - x0) + abs(y - y0);
        x0 = x, y0 = y;
    }
    printf("最短距离: %d\n", sum);
    return 0;
}
--------------------------------------------------------------------------------------------
 输入初始位置 x,y : 2,3
 输入星星的个数: 4
 输入第 1 个星星的位置 x,y : 0,5
 输入第 2 个星星的位置 x,y : 4,2
 输入第 3 个星星的位置 x,y : 1,1
 输入第 4 个星星的位置 x,y : 2,6
 最短距离: 21
 请按任意键继续. . .
 | 
 |