【杭电】[2020]绝对值排序

文章字数:245

问题描述

问题分析

想想这一题第一次见时候没写出来……
这次写得貌似也是有点麻烦

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<stdio.h>
#include<algorithm>
using namespace std;
struct numm {
	int m,flag;
} a[120];
bool vs(numm A,numm B) {
	return A.m>B.m;
}
int main() {
	int n;
	while(scanf("%d",&n),n) {
		for(int i=0; i<n; i++) {
			scanf("%d",&a[i].m);
			if(a[i].m<0) {
				a[i].flag=1;
				a[i].m=-a[i].m;
			} else
				a[i].flag=0;
		}
		sort(a,a+n,vs);
		for(int i=0; i<n; i++) {
			if(a[i].flag)
				printf("-");
			printf("%d",a[i].m);
			if(i<n-1)
				printf(" ");
		}
		printf("\n");
	}
	return 0;
}

20160404补充:

调用sort并自定义绝对值比较函数

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<stdio.h>
#include<math.h>
#include<algorithm>
using namespace std;
bool cmp(int a,int b) {
	return abs(a)>abs(b);
}
int main() {
	int n;
	int a[120];
	while(scanf("%d",&n),n) {
		for(int i=0; i<n; i++)
			scanf("%d",&a[i]);
		sort(a,a+n,cmp);
		for(int i=0; i<n; i++) {
			printf("%d",a[i]);
			if(i==n-1)
				printf("\n");
			else
				printf(" ");
		}
	}
	return 0;
}

题目地址:【杭电】[2020]绝对值排序

该内容采用 CC BY-NC-SA 4.0 许可协议。

如果对您有帮助或存在意见建议,欢迎在下方评论交流。

加载中...