hdoj 1148 Rock-Paper-Scissors Tournament(模拟题)

来源:互联网 发布:无线网卡怎么改mac地址 编辑:程序博客网 时间:2024/05/16 04:30

思路:注意是两个测试输出之间有空行,而不是每测试后加一个空行,还有当w=l=0时会输出“-”;

代码如下:

#include <iostream>  #include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>#include <algorithm>#include <vector>using namespace std;struct{int win;int lost;}p[110];int main(){int n,time;int p1,p2;char s1[10],s2[10];int i;int k=1;while(scanf("%d",&n) && n){scanf("%d",&time);for(i=0;i<111;i++){p[i].lost=0;p[i].win=0;}while(time--){scanf("%d %s %d %s",&p1,s1,&p2,s2);if(strcmp(s1,"rock")==0 && strcmp(s2,"scissors")==0){p[p1].win++;p[p2].lost++;}else if(strcmp(s1,"scissors")==0 && strcmp(s2,"paper")==0){p[p1].win++;p[p2].lost++;}else if(strcmp(s1,"paper")==0 && strcmp(s2,"rock")==0){p[p1].win++;p[p2].lost++;}else if(strcmp(s1,s2)==0);else{p[p1].lost++;p[p2].win++;}}if(k!=1)printf("\n");k--;for(i=1;i<=n;i++){if(p[i].lost==p[i].win && p[i].win==0)printf("-\n");elseprintf("%.3lf\n",(double)(p[i].win)/(double)(p[i].win+p[i].lost));}}                return 0;        }


原创粉丝点击