Description
二十三中信息组需要选一个组长。信息组一共有n个人,分别用1到n编号,其中m个人参与了投票。得票数过半<票数大于m /2>的人将被选为组长。
输入数据将告知这m个人分别将票投给了谁,请统计出谁将担任二十三中信息组的组长。
Input
第一行两个数n和m。
第二行有m个数,这些数都是不超过n的正整数,表明这m个人的选择。
Output
输出将被选为组长的人。如果没有人的票数过半,请输出-1。
Sample Input
7 4
7 7 2 7
Sample Output
7
Hint
1=<n<=maxlongint
1=<m<=10000
include <stdio.h>
#include<stdlib.h>
#include <iostream>
using namespace std;
int a[10000];
int n;
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}
int main()
{
int i,n,m,c,t,z,max;
while (scanf("%d %d", &n, &m) == 2){
for (i=0;i<m;++i)
{
scanf("%d", a+i);
}
qsort(a,m,sizeof(a[0]),cmp);
max=1;
c=1;
t=a[0];
for(i=0;i<m;++i){
if(a[i]==t)
{
c++;
}
else
{
if(c>max) {max=c;
z=t;}
c=1;
t=a[i];
}
}
if(c>max)
{ max=c;
z=t;
}
printf("%d\n", max>m/2 ? z : -1);
}
return 0;
}
哪错了呀
oj 谁是组长 求救~ 帮帮忙
答案:1 悬赏:0 手机版
解决时间 2021-04-11 09:14
- 提问者网友:不要迷恋哥
- 2021-04-11 04:46
最佳答案
- 五星知识达人网友:猎心人
- 2021-04-11 06:23
#include<stdio.h>//没有注释的程序不是好程序
int main()
{
// int i,n,m,c,t,z,max;//这些都是表示什么啊?记住:程序的可读性是第一位
int n;//候选人
int m;//选举人
int maxid;//记录票数最多者下标
int i;//循环变量
int x;//接受选举人的选择
int *a;//指针,指向候选人数组
printf("input n and m:\n");
scanf("%d%d",&n,&m);// 输入n,m
a=(int *)malloc(n*sizeof(int));//动态建立候选人数组,
for(i=0;i<n;i++)//初始选票全部清零
a[i]=0;
for(i=1;i<=m;i++)//m个人一次投票
{
printf("你选几号?\n");
scanf("%d",&x);
a[x-1]++;//数组小标从0开始,候选人编后题目要求从1开始,所以[x-1]
}
maxid=0;//先假设第一个人得票最多
for(i=0;i<n;i++)//取得得票最多者下标
{
if(a[i]>a[maxid])
maxid=i;
}
if(a[maxid]>m/2)//是否过半
printf("组长编号是 %d,下标是 %d\n",maxid+1,maxid);
else
printf("-1 \n");//无人当选
return 0;
}
int main()
{
// int i,n,m,c,t,z,max;//这些都是表示什么啊?记住:程序的可读性是第一位
int n;//候选人
int m;//选举人
int maxid;//记录票数最多者下标
int i;//循环变量
int x;//接受选举人的选择
int *a;//指针,指向候选人数组
printf("input n and m:\n");
scanf("%d%d",&n,&m);// 输入n,m
a=(int *)malloc(n*sizeof(int));//动态建立候选人数组,
for(i=0;i<n;i++)//初始选票全部清零
a[i]=0;
for(i=1;i<=m;i++)//m个人一次投票
{
printf("你选几号?\n");
scanf("%d",&x);
a[x-1]++;//数组小标从0开始,候选人编后题目要求从1开始,所以[x-1]
}
maxid=0;//先假设第一个人得票最多
for(i=0;i<n;i++)//取得得票最多者下标
{
if(a[i]>a[maxid])
maxid=i;
}
if(a[maxid]>m/2)//是否过半
printf("组长编号是 %d,下标是 %d\n",maxid+1,maxid);
else
printf("-1 \n");//无人当选
return 0;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯