- 题目描述:
-
输入一系列整数,将其中最大的数挑出,并将剩下的数进行排序。
- 输入:
-
输入第一行包括1个整数N,1<=N<=1000,代表输入数据的个数。接下来的一行有N个整数。
- 输出:
-
可能有多组测试数据,对于每组数据,第一行输出一个整数,代表N个整数中的最大值,并将此值从数组中去除,将剩下的数进行排序。第二行将排序的结果输出。
- 样例输入:
-
4 1 3 4 2
- 样例输出:
-
4 1 2 3
- 提示:
-
如果数组中只有一个数,当第一行将其输出后,第二行请输出"-1"。
这道题描述不是很明确,将此值从数组中去除,是指去除一个值,而不是都去除。
1 #include <cstdio> 2 #include <cstdlib> 3 #include <cstring> 4 #include <string> 5 #include <algorithm> 6 7 #define MAX 1002 8 9 int toDeal[MAX]; 10 11 int cmp(const void * a, const void *b) { 12 int at = *(int *)a; 13 int bt = *(int *)b; 14 return at - bt; 15 } 16 int main(int argc, char const *argv[]) 17 { 18 int n; 19 while(scanf("%d",&n) != EOF) { 20 for(int i = 0; i < n; i++) { 21 scanf("%d",&toDeal[i]); 22 } 23 if(n == 1) { 24 printf("%d ",toDeal[0]); 25 printf("%d ",-1); 26 continue; 27 } 28 qsort(toDeal, n, sizeof(int), cmp); 29 30 31 printf("%d ",toDeal[n-1]); 32 bool isOne = true; 33 for(int i = 0; i < n-1; i++) { 34 if(isOne) { 35 printf("%d",toDeal[i]); 36 isOne = false; 37 } 38 else { 39 printf(" %d",toDeal[i]); 40 } 41 42 } 43 printf(" "); 44 } 45 return 0; 46 }