华为上机测试 2015
描述: 输入一组大于等于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('\n' == 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() == '\n'){
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() == '\n'){
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;
}

浙公网安备 33010602011771号