当有时你第一步求出的一个数组并不是要输出的数,且还要进一步运算时,你可用数组的序号表示这个数进行运算,从而达到简化的作用。例如下图:
此题的第一步是求出这组数的最大值,然后计算从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]即可。
本人新萌,此文为给自己增强记忆。
才学疏浅,望大佬勿笑。