概述
例如,输入数据3,2,3,8,8,2,3
输入对应分组 1,2,3,2,1,3,1
输出:
1={2=0,3=2,8=1}
2={2=1,3=0,8=1}
3={2=1,3=1,8=0}
即每组中各数据出现的次数。
本题既然有分组,就可以考虑使用map,每一组存储的都是结构体map<int,int>,本体出现的次数既是结构体中第二个int的值,第一个int为组号,第二个int为数字,第三个int为出现的次数,注意循环往map中读取的时候只需一次循环,同时将数据和分组读入map中,出现一个数据就把对应的位置加一。
#include<iostream>
#include<map>
#include<sstream>
#include<string.h>
#include<stdio.h>
using namespace std;
void show(map<int,int> m){
map<int,int>::iterator it;
it=m.begin();
cout<<it->first<<"="<<it->second;
for(it++;it!=m.end();it++){
cout<<","<<it->first<<"="<<it->second;
}
}
int main(){
map<int,map<int,int>> mmap;
int a[100],b[100];
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
string s,temp;
getline(cin,s);
stringstream ss(s);
int count=0;
while(getline(ss,temp,','))b[count++]=stoi(temp);
getline(cin,s);
stringstream ss1(s);
count=0;
while(getline(ss1,temp,','))a[count++]=stoi(temp);
for(int i=0;a[i];i++){
for(int j=0;b[j];j++){
mmap[a[i]][b[j]]=0;
}
}
for(int i=0;a[i]&&b[i];i++){
mmap[a[i]][b[i]]++;
}
map<int,map<int,int>>::iterator it;
for(it=mmap.begin();it!=mmap.end();it++){
cout<<it->first<<"={";
show(it->second);
cout<<"}"<<endl;
}
}
最后
以上就是活泼飞机为你收集整理的先输入一组数,然后输入其分组,按照分组统计出现次数并输出的全部内容,希望文章能够帮你解决先输入一组数,然后输入其分组,按照分组统计出现次数并输出所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复