//这道题测试只得了60分,主要还是因为在排序的地方出错了;
/*
1 2 3 4 5
√2 1 √2 1 √2
1和2互换位置之后 第二个位置的√2又与第四个位置的1互换位置了,导致前两个√2的位置发生了互换,这就是例2为什么我的答案是2 4 3 而答案是2 4 1了
想要解决这个问题就要重新修改排序的算法。
*/
#include <stdio.h>
int main()
{
int n,a[200][2],x1,y1,x,y,temp1,temp2;
scanf_s("%d %d %d\n", &n,&x1,&y1);
for (int i = 0; i < n; i++)
{
scanf_s("%d %d", &x, &y);
a[i][0] = (x-x1) * (x-x1) + (y-y1) * (y-y1);
a[i][1] = i + 1;
}
for (int i = 0; i < n-1; i++)
{
for (int j = i + 1; j < n; j++)
{
if (a[i][0] == a[j][0])
i++;
if (a[i][0] > a[j][0])
{
temp1 = a[i][0];
a[i][0] = a[j][0];
a[j][0] = temp1;
temp2 = a[i][1];
a[i][1] = a[j][1];
a[j][1] = temp2;
}
}
}
printf("%d\n", a[0][1]);
printf("%d\n", a[1][1]);
printf("%d\n", a[2][1]);
return 0;
}
称检测点问题
最新推荐文章于 2021-01-10 21:13:14 发布