您的位置:首页 > 其它

nyoj7街区最短路径问题

2017-01-25 22:34 211 查看
题目链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=7

或者:http://115.159.40.116/problem_show.php?pid=4619

感觉像是nyoj1310郊游  的进化版,两题思路一样的(个人观点,我是用的同一种方法)
描述小明有很多个朋友,他们在家分别分布在 x 轴上的不同位置。有一天,他们想一起出去郊游,首先他们需要定一个地点集合,使得这个地点让他们从各自家里到该点的距离总和最小,小明想知道这个最小的距离总和是多少。

nyoj1310郊游链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=1310
思路:将坐标分别投影到x,y轴上,然后在x轴上寻找一个点A使x上所有点到A的距离最短,y同理,两者相加即是结果。
街区最短路径问题AC代码:

#include <stdio.h>
int findPoint(int a[], int n) {
int sum, min = 20000, i, j;
for(i = 0; i < n; i++) {
sum = 0;
for(j = 0; j < n; j++) {
if(a[j] > a[i]) sum += a[j]-a[i];//把a[i]当成答案,计算轴上每个点到这个点的距离
else sum += a[i]-a[j];
}
if(sum < min) min = sum;//更新最短距离
}
return min;
}
int main() {
int t, n, a[20], b[20], i;
scanf("%d", &t);
while(t--) {
scanf("%d", &n);
for(i = 0; i < n; i++) scanf("%d%d", &a[i], &b[i]);
printf("%d\n", findPoint(a, n)+findPoint(b, n));
}
return 0;
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: