• 【HDU 1889】Reaux! Sham! Beaux!(模拟+水题)


    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=1889

    题意:给出一个表,每个国家的石头剪子布的叫法,给两个人用自己国家的语言进行石头剪子布,进行统计,最后输出胜负信息。

    分析:就是模拟,先用map去映射每一个字符串,3种分别为1,2,3,然后进行统计判定即可,注意坑点就是输出时候有单复数区别,还有输出格式比较容易错。

    代码:

    /* ***********************************************
    Author        :Torrance_ZHANG
    Created Time  :2016/5/2 15:04:40
    File Name     :ceshi.cpp
    ************************************************ */
    
    #include<iostream>
    #include<stdio.h>
    #include<queue>
    #include<string.h>
    #include<math.h>
    #include<string>
    #include<map>
    using namespace std;
    map<string,int>mm;
    struct Node{
        string name;
        string nation;
        Node(string a="",string b=""):name(b),nation(a){}
    };
    void init(){
        mm["Kamen"]=mm["Rock"]=mm["Pierre"]=mm["Stein"]=mm["Ko"]=mm["Koe"]=mm["Sasso"]=mm["Roccia"]=mm["Guu"]=mm["Kamien"]=mm["Piedra"]=1;
        mm["Nuzky"]=mm["Scissors"]=mm["Ciseaux"]=mm["Schere"]=mm["Ollo"]=mm["Olloo"]=mm["Forbice"]=mm["Choki"]=mm["Nozyce"]=mm["Tijera"]=2;
        mm["Papir"]=mm["Paper"]=mm["Feuille"]=mm["Papier"]=mm["Papir"]=mm["Carta"]=mm["Rete"]=mm["Paa"]=mm["Papier"]=mm["Papel"]=3;
    }
    int main(){
        string a,b;
        init();
        int id=1;
        bool flag=false;
        while(cin>>a>>b){
            Node na(a,b);
            cin>>a>>b;
            Node nb(a,b);
            string op;
            int num[5]={0};
            while(cin>>op){
                if(!flag){
                    if(op=="-"||op=="."){
                        cout<<"Game #"<<id++<<":"<<endl;
                        cout<<na.name<<": "<<num[1]<<" point" << (num[1]==1?"":"s")<<endl;
                        cout<<nb.name<<": "<<num[2]<<" point"<<(num[2]==1?"":"s")<<endl;
                        if(num[1]==num[2])
                            cout<<"TIED GAME"<<endl;
                        else if(num[1]>num[2]){
                            cout<<"WINNER: "<<na.name<<endl;
                        }
                        else if(num[1]<num[2]){
                            cout<<"WINNER: "<<nb.name<<endl;
                        }
                        cout<<endl;
                        if(op=="."){
                            flag=true;
                        }
                        break;
                    } else{
                        string op2;
                        cin>>op2;
                        if(mm[op]!=mm[op2]){
                            if(mm[op]==1&&mm[op2]==2){
                                num[1]++;
                            }
                            else if(mm[op]==1&&mm[op2]==3){
                                num[2]++;
                            }
                            else if(mm[op]==2&&mm[op2]==1){
                                num[2]++;
                            }
                            else if(mm[op]==2&&mm[op2]==3){
                                num[1]++;
                            }
                            else if(mm[op]==3&&mm[op2]==1){
                                num[1]++;
                            }
                            else if(mm[op]==3&&mm[op2]==2){
                                num[2]++;
                            }
                        }
                    }
                }
            }
            if(flag)
                return 0;
        }
    }
  • 相关阅读:
    Redis存储对象(序列化和反序列化)
    JAVA中关于set()和get()方法的理解以及使用
    5W1H分析法
    Spring AOP的理解(通俗易懂)。
    Notepad++ 使用步骤,熟练掌握notepad++的使用技巧,无疑会大大提升专业技能。以及快捷键操作
    Int,String,Integer,double之间的类型的相互转换
    Ajax局部刷新和全局刷新的区别
    GET和POST都是什么时候用?
    ajax为什么需要json格式响应数据?
    final fially finalize区别
  • 原文地址:https://www.cnblogs.com/Torrance/p/5452419.html
Copyright © 2020-2023  润新知