|
发表于 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
请按任意键继续. . . |
|