直方图(用数组代替数)

当有时你第一步求出的一个数组并不是要输出的数,且还要进一步运算时,你可用数组的序号表示这个数进行运算,从而达到简化的作用。例如下图:在这里插入图片描述
此题的第一步是求出这组数的最大值,然后计算从0到最大值之间各个数出现的次数。若直接写可能要一个数一个数的循环,或是循环嵌套。这样既麻烦还易出错。所以可以用以下方法:

#include <iostream>
using namespace std;

int main(){
    int n,x,i,j,max=0;
    int a[10001];
    cin>>n;
    a[0]=0;
    for(i=1;i<=n;i++)
    { cin>>x;
       a[x]++;
       if(x>max)
       max=x;
     }
     for(i=0;i<=max;i++)
        cout<<a[i]<<endl;
    return 0;
}

当计算1的的个数时,用a[1]来代替。每输入一个1是a[1]就加1,最后要输出1的个数时,直接输出a[1]即可。

本人新萌,此文为给自己增强记忆。
才学疏浅,望大佬勿笑。


版权声明:本文为qq_52130952原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。