问题标题: 酷町堂:1489

0
0
已解决
胡钰妍
胡钰妍
资深光能
资深光能

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

 

 

求思路和伪代码


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;
}

0
我要回答