• 数字统计


    转载请标明出处:牟尼的专栏 http://blog.csdn.net/u012027907

    Problem2: 

    题目描写叙述: 

    输入一组数据,统计每一个数出现的次数,并依照数字的大小进行排序输出。 

    输入: 

    输入20个数字,数字之间用空格隔开。

     输出: 

    统计每一个数字出现的次数,并按数字的大小输出数字及其出现的次数.

     例子输入: 

    20

    9 8 5 1 7 2 8 2 9 10 1 7 8 9 5 6 9 0 1 9 

    例子输出:

     0:1

     1:3

     2:2 

    5:2

     6:1 

    7:2 

    8:3 

    9:5 

    10:1 


    提示:类似于词频分析,简化了而已!


    /*
     * 描写叙述: 机试题A解答
     * 作者: 张亚超 
     * 博客: 牟尼的专栏 http://blog.csdn.net/u012027907
     * 日期: 2014/8/24
     */
    #include <stdio.h>
    #include <algorithm>
    using namespace std;
    
    #define N 100000
    
    struct Nm{
    	int num;   //数字
    	int count; //个数
    
    	bool operator < (const Nm &A)const{  //重载小于
    		return num < A.num;
    	}
    }Num[N];
    
    int main(){
    
    	int n;
    	int count = 0;
    
    	while(scanf("%d",&n) != EOF){
    		if(n == 0)
    			break;
    		int tmp;
    		for(int i = 0; i < n; i++){
    			scanf("%d",&tmp);
    			for(int j = 0; j < count; j++){
    				if(tmp == Num[j].num){   //若等于前面的某个数,则个数加一
    					Num[j].count++;
    					break;
    				}
    			}
    			if( j >= count){            //若为新的数,则插入新节点
    				Num[j].num = tmp;
    				Num[j].count = 1;
    				count++;
    			}
    		}
    
    		sort(Num,Num+count);  //按数字排序
    
    		for( i = 0; i < count; i ++)  //输出
    			printf("%d:%d
    ",Num[i].num,Num[i].count);
    		printf("
    ");
    	}
    	return 0;
    }
    转载请标明出处:牟尼的专栏 http://blog.csdn.net/u012027907

  • 相关阅读:
    403
    311
    401
    310
    308
    309
    307
    304
    3-1
    2-11
  • 原文地址:https://www.cnblogs.com/lytwajue/p/6903054.html
Copyright © 2020-2023  润新知