您的位置:首页 > 其它

华为上机测试 2015

2015-07-02 12:36 387 查看
描述: 输入一组大于等于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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: