C语言:一道投票问题

来源:百度知道 编辑:UC知道 时间:2024/06/16 00:42:49
一年一度的IT节又拉开了帷幕。今年的IT节新增加了一个环节:风云人物评选。由同学们自己投票,选出心目中的风云人物。
设风云人物候选人共有N名,编号分别从1-N。每个同学都有一次投票机会,可以投票给自己心目中学校的风云人物。只有全体票数通过的候选人才能当选。请你写个程序来帮忙统票吧。

Input

有多组测试数据。
首先有一个整数C,表示随后有C组数据。
每组测试样例的第一行只有一个整数N,0随后有若干行,每行代表一名同学的投票情况。
每名同学的投票情况首先以K开始,-1<=k<=30,代表这名同学一共投了K个人,注意每个同学可以投票给所有的候选人,也可以一个都不投。当K为-1时,代表该组测试数据输入结束。
随后有K个数字,用空格分隔,对应为所投候选人的编号,保证均为合法编号,也不会出现同一编号投了两次的情况。

Output

每组测试数据对应输出一行,为当选风云人物的候选人编号。当有多位候选人当选时,按照从小到大的顺序输出他们的编号,并在每个编号后加空格。当没有候选人当选时,直接输出空行。

Sample Input

3
4
4 1 2 3 4
2 1 3
-1
30
1 1
1 2
-1
10
3 1 2 3
3 3 4 5
-1

Sample Output

1 3

3

//开个数组保存每个候选人的得票数,在统计完所有票数后,遍历得票数组,发现得票数=投票人数就输出。注意数据后的空格。
#include <iostream>
#include <memory>
using namespace std;
#define MAXN 1001
int s[MAXN];
int main(){
int num,n,m,t,p,i;
scanf("%d",&n);
while(n--){
scanf("%d",&m);
memset(s,0,m);
num=0;
while(scanf("%d",&t)!=EOF&&t!=-1){
while(t--){
scanf("%d",&p);
s[p]++;
}
num++;
}
for(i=1;i<=m;i++){
if(s[i]==num)cout<<i<<" ";
}
cout<<endl;
}
return 0;
}

1 3