统计每个值连续出现的次数
问题:输入一组数(相同的数字放在一起),写一个程序用来统计在输入中每个值连续出现了多少次。
程序代码:
#include <iostream>
using namespace std;
int main(){
int currVal =0,val = 0;
if ( cin >> currVal){ //读取第一个数
int cnt = 1;
while( cin >> val){
if( val == currVal)
++cnt;
else {
cout << currVal << " occurs " << cnt <<" times " << endl;
currVal = val; //记住新值
cnt = 1; //重置计数器
}
}
cout << currVal <<" occurs " << cnt <<" times " <<endl;
}
return 0;
}
思考过程:如何从前到后走一遍获得每个不同值出现的次数??
- 分组,按组统计
- 把每组放到一个容器里(数组),最后统计每个数组的大小;
- 声明两个Vector,对应的位置分别放置当前Val值和出现次数count;
- 线性遍历
- 进一步发展上述2的想法,每个Val值和次数count并不是要求同时并存的,得到一次即可立刻输出。因此反复利用两个变量就够了,一个存值,一个计数。
- 这是一个循环,考虑每个子过程:记录第一个出现变化的数currVal(保持不变,直至读入另一个变化的数),将后续的数一直和此数比,相同计数器增加一;不同更新currVal,计数器重置为1。
- 考虑边界值,第一个currVal为第一个数;最后一次遇到非法输入符不进入循环,故应将其结果特意地输出。
运行结果:
1. 测试用例1
2. 测试用例2
3. 测试用例3
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。
- 上一篇: 在字符串中找出连续最长的数字串(python实现)
- 下一篇: Sas应用之统计多个数据集重复数据量