zoukankan      html  css  js  c++  java
  • Rock-Paper-Scissors Tournament[HDU1148]

    Rock-Paper-Scissors Tournament
    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
    Total Submission(s): 2178 Accepted Submission(s): 693


    Problem Description
    Rock-Paper-Scissors is game for two players, A and B, who each choose, independently of the other, one of rock, paper, or scissors. A player chosing paper wins over a player chosing rock; a player chosing scissors wins over a player chosing paper; a player chosing rock wins over a player chosing scissors. A player chosing the same thing as the other player neither wins nor loses.
    A tournament has been organized in which each of n players plays k rock-scissors-paper games with each of the other players - k games in total. Your job is to compute the win average for each player, defined as w / (w + l) where w is the number of games won, and l is the number of games lost, by the player.

     

    Input
    Input consists of several test cases. The first line of input for each case contains 1 ≤ n ≤ 100 1 ≤ k ≤ 100 as defined above. For each game, a line follows containing p1, m1, p2, m2. 1 ≤ p1 ≤ n and 1 ≤ p2 ≤ n are distinct integers identifying two players; m1 and m2 are their respective moves ("rock", "scissors", or "paper"). A line containing 0 follows the last test case.

     

    Output
    Output one line each for player 1, player 2, and so on, through player n, giving the player's win average rounded to three decimal places. If the win average is undefined, output "-". Output an empty line between cases.

     

    Sample Input
    2 4
    1 rock 2 paper
    1 scissors 2 paper
    1 rock 2 rock
    2 rock 1 scissors
    2 1
    1 rock 2 paper
    0

    Sample Output
    0.333
    0.667

    0.000
    1.000

    #include<iostream>
    #include<string>
    #include<cstring>
    #include<cstdio>
    #include<queue>
    #include<stack>
    #include<algorithm>
    #include<cmath>
    #include<set>
    #include<map>
    #include<vector>
    #include<fstream>
    #include<sstream>
    #include<iomanip>
    #include <sstream>
    using namespace std;
    
    const int N=105;
    
    int player[N][2]; // player[i][0]: win , player[i][1]: lose. 
    
    int n,k;
    short judge(string a, string b)
    {
        if(a == b)
        {
            return 0;
        }
        short result;
        if(a == "rock")
        { 
            if(b == "scissors")
            {
                result = 1;
            }
            else if(b == "paper")
            {
                result = -1;
            }
        }
        else if(a == "scissors")
        {
            if(b == "rock")
            {
                result = -1;
            }
            else if(b == "paper")
            {
                result = 1;
            }
        }
        else
        {
            if(b == "scissors")
            {
                result = -1;
            }
            else if(b == "rock")
            {
                result = 1;
            }
        }
        return result;
    }
    int main()
    {
        short ans;
        string sa,sb;
        int pa,pb;
        bool first = true;
        while(cin>>n && n)
        {
            if(!first)putchar('
    ');
            if(first)first=false;
            memset(player,0,sizeof(player));
            cin>>k;
            while(k--)
            {
                cin>>pa>>sa>>pb>>sb;
                ans = judge(sa,sb);
                if(ans)
                {
                    if(ans==1)//win
                    {
                        player[pa][0]++;
                        player[pb][1]++;
                    }
                    else//lose
                    {
                        player[pb][0]++;
                        player[pa][1]++;
                    }
                }
            }
            for(int i=1; i<=n; i++)
            {
                int total = player[i][0]+player[i][1];
                if(total>0)
                {
                    printf("%.3f
    ",((float)player[i][0])/total);
                }
                else
                {
                    printf("-
    ");
                }
            }
        }
        return 0;
    }
    View Code
  • 相关阅读:
    [翻译] REMenu
    图片切换的效果
    刮奖效果
    粒子雪花效果
    Shimmer辉光动画效果
    解决Bootstrap 标签页(Tab)插件切换echarts不显示问题
    主要是解决,作为一个数据共享的数据库,存在的数据库统计,然后将计算的数据量输出到自己使用的数据库,进行主页面展示。
    使用kettle来根据时间戳或者批次号来批量导入数据,达到增量的效果。
    使用java的Calendar工具类获取到本月的第一天起始时间和最后一天结束时间。
    mysql根据分组和条件查询以后如何统计记录的条数
  • 原文地址:https://www.cnblogs.com/dramstadt/p/6091134.html
Copyright © 2011-2022 走看看