• 华为上机测试 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('
    ' == 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;
    }
    
  • 相关阅读:
    配置Log4j(非常具体)
    RapeLay(电车之狼R)的结局介绍 (隐藏结局攻略)
    普林斯顿公开课 算法1-11:并查集的应用
    检查Oracle 中死事务的语句
    app被Rejected 的各种原因翻译
    经典语录和思考总结
    Java实现夺冠概率模拟
    Java实现夺冠概率模拟
    Java实现打印回型嵌套
    Java实现打印回型嵌套
  • 原文地址:https://www.cnblogs.com/fangying7/p/4615712.html
Copyright © 2020-2023  润新知