#39584: 請問我的程式哪裡錯了呢


F34121094 (Willy)

學校 : 國立成功大學
編號 : 258789
來源 : [42.78.153.44]
最後登入時間 :
2024-04-22 12:33:13
a915. 二维点排序 | From: [116.241.196.246] | 發表日期 : 2024-03-08 22:02

#include<stdio.h>
 
int main(){
int ary_x[100000],ary_y[100000];
int a;
scanf("%d", &a);
for(int i = 0 ; i < a ; i++){
scanf("%d %d", &ary_x[i],&ary_y[i]);
}
int temp ;
for(int i = a - 1; i > 0 ;i --){
for(int j = 0 ; j < i ; j++){
if(ary_x[j] > ary_x[j+1]){
temp = ary_x[j];
ary_x[j] = ary_x[j+1];
ary_x[j+1] = temp;
}
}
}
for(int i = a - 1; i > 0 ;i --){
for(int j = 0 ; j < i ; j++){
if(ary_y[j] > ary_y[j+1]){
temp = ary_y[j];
ary_y[j] = ary_y[j+1];
ary_y[j+1] = temp;
}
}
}
 
for(int i = 0 ; i < a ; i++){
printf("%d %d\n", ary_x[i],ary_y[i]);
}
 
return 0;
 
#39593: Re: 請問我的程式哪裡錯了呢


freedom501999@gmail.com (帥氣魔方生)

學校 : 不指定學校
編號 : 88611
來源 : [39.8.203.54]
最後登入時間 :
2019-05-30 22:56:25
a915. 二维点排序 | From: [114.140.129.114] | 發表日期 : 2024-03-09 16:19

int temp ;
for(int i = a - 1; i > 0 ;i --){
for(int j = 0 ; j < i ; j++){
if(ary_x[j] > ary_x[j+1]){
temp = ary_x[j];
ary_x[j] = ary_x[j+1];
ary_x[j+1] = temp;
}
}
}
for(int i = a - 1; i > 0 ;i --){
for(int j = 0 ; j < i ; j++){
if(ary_y[j] > ary_y[j+1]){
temp = ary_y[j];
ary_y[j] = ary_y[j+1];
ary_y[j+1] = temp;
}


你把座標點拆開了,例如假設題目 

1, 5

2, 8

9, 1

4, 5

3, 7

你的程式排序後會變成

1, 1

2, 5

3, 5

4, 7

9, 8

但正確的答案應該是

1, 5

2, 8

3, 7

4, 5

9, 1

 
ZeroJudge Forum