描述: 输入一组大于等于0的整数,根据从大到小排序后输出,如果排序后有连续整数时,只输出连续数中最大和最小的两个数。输入的所有整数各不相同,即不用考虑两个整数相同的情况。
运行时间:无限制
内存限制:无限制
输入:一组大于等于0的整数,不考虑非法输入,各个整数之间以逗号(",")分隔,输入总数长度小于100个字节。
输出:排序后,各个整数之间以逗号(",")分隔。
样例输入:1,4,7,2,5,8,9,11
样例输出:11,9,7,5,4,2,1
#include <iostream> #include <vector> #include <algorithm> #include <set> using namespace std; int main(){ vector<int> src; set<int> dst; int input; int len; while(1){ cin>>input; src.push_back(input); if(' ' == cin.get()) break; } sort(src.begin(), src.end(), greater<int>()); len = src.size(); int i; int j; int start = src[0] ; int stop = src[0]; dst.insert(src[0]); for(i=0; i<len; ){ for(j=i+1; j<len;++j){ if(src[i] - src[j] == j-i){ stop = src[j]; }else{ start = src[j]; break; } } dst.insert(stop); dst.insert(start); i = j; } set<int>::reverse_iterator iter = dst.rbegin(); for(; iter != --dst.rend(); ++iter){ cout<<*iter<<","; } cout<<*iter; return 0; }
描述:输入一组大于等于0的整数,各个整数之间以逗号(",")分隔,输入总长度小于4096,输出去除重复之后的整数
输入:一组整数,各个整数之间以逗号(",")分隔
输出:各个整数之间以逗号(",")分隔
样例输入:9,9,2,3,6,5,2,21
样例输出:9,2,3,5,21
#include <stdio.h> #include <string.h> #include <stdlib.h> #define MAX_LEN 4096 int main(){ int src[MAX_LEN]; int dst[MAX_LEN]; int len; int i; int j; int k = 0; while(1){ len = 0; k = 0; i = 0; j = 0; do{ scanf("%d",&src[len++]); if(getchar() == ' '){ break; } }while(1); /* delete replicas : 去除重复的项 */ for(i=0; i<len ; i++){ for(j=0; j<=k; j++){ if(src[i] == dst[j]){ break; } if(j == k){ dst[k] = src[i]; k++; break; } } } for(i=0 ; i<k-1; i++){ printf("%d,",dst[i]); } printf("%d",dst[k-1]); } return 0; }
描述:输入一组大于等于0的整数,各个整数之间以逗号(",")分隔,先按照从大到小排序,然后输出去除重复之后的整数
输入:一组整数,各个整数之间以逗号(",")分隔
输出:各个整数之间以逗号(",")分隔
样例输入:9,9,2,3,6,5,2,21
样例输出:21,9,5,3,2
#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_LEN 4096 int compare(const void *a, const void *b){ return *(int *)b - *(int *)a; } int main(){ int src[MAX_LEN]; int dst[MAX_LEN] = {-1}; int i = 0; int j = 0; int len = 0; while(1){ len = 0; j = 0; do{ scanf("%d",&src[len++]); if(getchar() == ' '){ break; } }while(1); qsort(src, len, sizeof(int), compare); //排序后去重的方法 for(i=0; i<len; i++){ while(src[i]==src[i+1]){ i++; } dst[j++] = src[i]; } for(i=0; i<j; i++){ printf("%d,",dst[i]); } } return 0; }