数组计数
1.数组计数使用技巧
思考这样一个问题:
给了十个人,编号分别是 1~10
,现在人们要给他们投票。输入 n
个数字,数字是几就代表这一票投给了编号为几的人。
如果不用数组,可以如何实现这个功能呢?用 if
,可以定义十个变量 a,b,c,d,e,f,g,h,i,j
,然后依次判断输入的数字,再让对应的变量增加即可:
cin >> x;
if (x == 1) a++;
else if (x == 2) b++;
else if (x == 3) c++;
else if (x == 4) d++;
....
如果将变量替换为数组,定义数组 a
,用 a[1]
记录编号为 1
的人的票数,a[2]
记录编号为 2
的人的票数,以此类推,那么代码就是:
cin >> x;
if (x == 1) a[1]++;
else if (x == 2) a[2]++;
else if (x == 3) a[3]++;
...
其实这代码也可以写成:
cin >> x;
a[x]++;
这便是数组计数的思想了,本质还是利用数组元素的下标,把要记录信息的对象和数组元素建立联系,以此来快速地更新和获取信息。
在使用数组计数时,要注意信息对象的数据范围,是否会超过数组的范围。例如上述例子,如果把被投票的人改成 1,000,000,000
个,若直接用数组计数的方式来记录信息,我们就需要把数组开到 1,000,000,000
的长度,这显然是不可能的。