谁是卧底

题目描述

  大家都玩过游戏谁是卧底吗?这个游戏是这样玩的,参加人员为主持人加n个参赛者,主持人发给各位参赛者一个词语,大部队(n-1个人)拿到相同的一个词语,剩下一个人拿到与之相关的另一个词语,此人即为卧底。游戏规则如下:

  1.每个参赛者每轮只能说一句话描述自己拿到的词语(不能直接说出那个词语)。

  2.每轮描述完毕,所有参赛的人投票选出怀疑谁是卧底,得票最多的人出局。两个人一样多的话,待定(暂时保留)。若卧底出局,则游戏结束。若卧底未出局,游戏继续。

  3.重复上述流程。若卧底撑到最后一轮(场上剩3人时),则卧底获胜,反之,则大部队胜利。

  现在需要你编一段C语言的程序,来判断谁该出局。

 

输入格式

共2行,第1行是一个正整数n(3<n<31),表示参赛选手人数;第2行是n个正整数,表示各个选手给出的卧底的编号(各选手编号为1到n)。

 

输出格式

只有一行,出局者的编号(测试数据保证有唯一一人出局)

 

输入样例

7

2 2 3 3 3 4 4

 

输出样例

3

 

程序代码:

 

#include<stdio.h>
int main(void)
{
	int n;
	scanf("%d", &n);
	int A[31] = { 0 };
	int i, j, k;
	for (i = 0; i < n; i++)
	{
		scanf("%d", &A[i]);
	}
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < i; j++)
		{
			if (A[j] > A[j + 1])
			{
				k = A[j];
				A[j] = A[j + 1];
				A[j + 1] = k;
			}
		}
	}//将编号由大到小排序
	int number1 = 1, number2 = 1, m = 1;
	for (i = 0; i < n; i++)
	{
		if (A[i] == A[i + 1])
		{
			number1 = number1 + 1;
		}
			if (number1 > number2)//统计票最多的人
			{
				number2 = number1;
				m = A[i];
			}
			if(A[i]!=A[i+1])
			number1 = 1;
	}
	printf("%d", m);
	return 0;
}

本题关键:先排序,后计数。 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值