资深光能
1489 酷町堂选班长
题目描述 Description
酷町堂某一个班级准备通过投票的方式选出一位班长,已知该班有n位同学,每个人的姓名已知,且每位同学都有一张选票,在选票上写上想投的人的姓名,可以投给别人也可以投给自己。请编写程序统计投票的结果,按输入的顺序将每位同学所得的选票数统计出来,要求每位同学占一行,先输出姓名,再输出所得的票数。
输入描述 Input Description
输入为3行,
第一行为该班级的人数n(n≤20);
第二行为该班级学生的姓名;
第三行为每位同学的投票姓名。
输出描述 Output Description
输出为n行,按照输入顺序,将每位同学所得的选票数统计出来,要求每位同学占一行,先输出姓名,再输出所得的票数,中间用单个空格隔开。
样例输入 Sample Input
5
Liudehua Zhoujielun Chenyixun Huge Liuyifei
Zhoujielun Chenyixun Zhoujielun Zhoujielun Huge
样例输出 Sample Output
Liudehua 0
Zhoujielun 3
Chenyixun 1
Huge 1
Liuyifei 0
求思路和伪代码
资深守护
#include<iostream>
#include<algorithm>
using namespace std;
整形变量 n;
字符串 s;
结构体 cand{
string name;
int cnt;
}c[30];
int find(string name){
for(int i=1;i<=n;i++){
if(c[i].name==name){
return i;
}
}
}//寻找下标的函数
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>c[i].name;//输入
c[i].cnt=0;
}
for(int i=1;i<=n;i++){
cin>>s;
int j=find(s);//寻找每个人投给了谁
c[j].cnt++;//累加
}
for(int i=1;i<=n;i++){
cout<<c[i].name<<" "<<c[i].cnt<<endl;//输出
}
return 0;
}