首页 > 代码库 > HNU 12845 Ballot Analyzing Device
HNU 12845 Ballot Analyzing Device
题目链接:http://acm.hnu.cn/online/?action=problem&type=show&id=12845&courseid=270
解题报告:有m个认给n个人投票,n个认位置是固定的,输入一行字符,X表示会投给这个人,例如X....这个表示会投给第一个人,然后让你分别求出这n个人分别占总
票数的百分之几,如果两个人票数相同,则按照原来固定的顺序。
水题,注意任意一个人投的票要有效的话必须满足至少并且只能投一个人。
1 #include<cstdio> 2 #include<cstring> 3 #include<iostream> 4 #include<algorithm> 5 #include<cstdlib> 6 using namespace std; 7 struct node 8 { 9 char name[100];10 double num,ans;11 int cixu;12 }men[15];13 char str[15];14 bool cmp(node a,node b)15 {16 if(a.num == b.num)17 return a.cixu < b.cixu;18 return a.num > b.num;19 }20 int main()21 {22 int n,m;23 while(scanf("%d%d",&n,&m)!=EOF)24 {25 for(int i = 0;i < n;++i)26 {27 scanf("%s",men[i].name);28 men[i].num = 0;29 men[i].cixu = i;30 }31 strcpy(men[n].name,"Invalid");32 int tt = m;33 while(tt--)34 {35 scanf("%s",str);36 int f = -1;37 for(int i = 0;i < n;++i)38 if(str[i] == ‘X‘)39 {40 if(f == -1) f = i;41 else f = n;42 }43 if(f == -1) f = n;44 men[f].num++;45 }46 for(int i = 0;i <= n;++i)47 men[i].ans = 100.0 * men[i].num / (double)m;48 sort(men,men+n,cmp);49 for(int i = 0;i <= n;++i)50 printf("%s %.2lf%%\n",men[i].name,men[i].ans);51 }52 return 0;53 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。