• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            /*
            ? Name:6.剪刀石頭布
            ? Copyright:
            ? Author:
            ? Date: 28-05-06 08:51
            ? Description:
            N個(gè)小孩正在和你玩一種剪刀石頭布游戲(剪刀贏布,布贏石頭,石頭贏剪刀)。N個(gè)小孩中有一個(gè)是裁判,其余小孩分成三組(不排除某些組沒(méi)有任何成員的可能性),但是你不知道誰(shuí)是裁判,也不知道小孩們的分組情況。然后,小孩們開(kāi)始玩剪刀石頭布游戲,一共玩M次,每次任意選擇兩個(gè)小孩進(jìn)行一輪,你會(huì)被告知結(jié)果,即兩個(gè)小孩的勝負(fù)情況,然而你不會(huì)得知小孩具體出的是剪刀、石頭還是布。已知各組的小孩分別只會(huì)出一種手勢(shì)(因而同一組的兩個(gè)小孩總會(huì)是和局),而裁判則每次都會(huì)隨便選擇出一種手勢(shì),因此沒(méi)有人會(huì)知道裁判到底會(huì)出什么。請(qǐng)你在M次剪刀石頭布游戲結(jié)束后,猜猜誰(shuí)是裁判。如果你能猜出誰(shuí)是裁判,請(qǐng)說(shuō)明最早在第幾次游戲結(jié)束后你就能夠確定誰(shuí)是裁判。

            輸入要求:
            輸入文件包含多組測(cè)試數(shù)據(jù),每組測(cè)試數(shù)據(jù)第一行為兩個(gè)整數(shù)N和M(1<=N<=500,0<M<=2000),分別為小孩的個(gè)數(shù)和剪刀石頭布游戲進(jìn)行的次數(shù)。接下來(lái)M行,每行兩個(gè)整數(shù)且中間以一個(gè)符號(hào)隔開(kāi)。兩個(gè)整數(shù)分別為進(jìn)行游戲的兩個(gè)小孩各自的編號(hào)(為小于N的非負(fù)整數(shù))。符號(hào)的可能值為“=”、“>”和“<”,分別表示和局、第一個(gè)小孩勝和第二個(gè)小孩勝三種情況。例:
            3 3
            0<1
            1<2
            2<0
            3 5
            0<1
            0>1
            1<2
            1>2
            0<2
            4 4
            0<1
            0>1
            2<3
            2>3
            1 0

            ?

            輸出要求:
            1.每組測(cè)試數(shù)據(jù)輸出一行,若能猜出誰(shuí)是裁判,則輸出裁判的編號(hào),并輸出在第幾次游戲結(jié)束后就能夠確定誰(shuí)是裁判,小孩的編號(hào)和游戲次數(shù)以一個(gè)空格隔開(kāi);
            2.如果無(wú)法確定誰(shuí)是裁判,輸出-2;如果發(fā)現(xiàn)剪刀石頭布游戲的勝負(fù)情況不合理(即無(wú)論誰(shuí)是裁判都會(huì)出現(xiàn)矛盾),則輸出-1。例:
            -2
            1 4
            -1
            0 0

            ?

            評(píng)分規(guī)則:
            1.程序?qū)⑦\(yùn)行在一臺(tái)Linux機(jī)器上(內(nèi)存使用不作嚴(yán)格限制),在每一測(cè)試用例上運(yùn)行不能超過(guò)10秒,否則該用例不得分;
            2.要求程序能按照輸入樣例的格式讀取數(shù)據(jù)文件,按照輸出樣例的格式將運(yùn)行結(jié)果輸出到標(biāo)準(zhǔn)輸出上。如果不能正確讀入數(shù)據(jù)和輸出數(shù)據(jù),該題將不得分;
            3.該題目共有5個(gè)測(cè)試用例,每個(gè)測(cè)試用例為一個(gè)輸入文件。各測(cè)試用例占該題目分?jǐn)?shù)的比例分別為5%、10%、15%、30%和40%;
            4.該題目20分。
            */

            /*
            算法介紹:
            1。如果只有1個(gè)人,參加比賽,那么他就是裁判,即輸出:0 0 。
            2。建立數(shù)組 players[MAX][MAX] 記錄比賽結(jié)果(數(shù)組賦初值0),若選手a輸給b,則players[a][b]=1,players[b][a]=3;若打平,則players[a][b]=players[b][a]=2;
            注意:在記錄成績(jī)之前,先判斷選手a,b 是否已經(jīng)比賽過(guò),如果已經(jīng)比賽過(guò),則判斷先前的比賽結(jié)果是否與當(dāng)前結(jié)果相同,若不相同,在數(shù)組judger[]中做標(biāo)記(數(shù)組賦初值0),若judger[a]=0,使judger[a]=1,表示a有可能為裁判;若judger[a]=1,則使judger[a]=2,表示a肯定為裁判,因?yàn)樗蛢蓚€(gè)人出現(xiàn)不同結(jié)果。
            同理處理b。
            3。遍歷數(shù)組judger[],用temp1記錄judger[i]=1出現(xiàn)的次數(shù),用temp2記錄judger[i]=2出現(xiàn)的次數(shù),如果2個(gè)或以下的人可能為裁判,且沒(méi)有人肯定為裁判,即if (temp1 <= 2 && temp2 == 0),則無(wú)法確定誰(shuí)是裁判;
            如果2個(gè)或以下的人可能為裁判,且有1人肯定為裁判,即if (temp1 <= 2 && temp2 == 1),則確定裁判i;
            如果2個(gè)以上的人可能為裁判,即if (temp1 > 2),則勝負(fù)情況不合理。
            */

            #include <iostream>
            #include<fstream>
            #include <time.h>

            using namespace std;

            const int MAX = 500;
            void Readata(const char *filename);


            int main()
            {
            ?time_t startTime;
            ?time_t endTime;
            ?time(&startTime);

            ?Readata("in.txt");


            ?time(&endTime);
            ?cout << difftime(endTime, startTime) << endl;

            ?getchar();
            ?return 0;
            }

            void Readata(const char *filename)
            {
            ????? fstream in(filename);
            ????? if (!in)
            ??????????? return ;?? //結(jié)束程序執(zhí)行

            ????? while (!in.eof())
            ????? {
            ??????????? int N, M;
            ??????????? in >> N;
            ??????????? in >> M;
            ???????????
            ??????????? if (N == 1) //如果只有1個(gè)人,參加比賽,那么他就是裁判
            ????????????????? cout << 0 << ' ' << 0 << endl;
            ?????????????????
            ??????????? int players[MAX][MAX] = {0};//記錄比賽結(jié)果
            ??????????? int *judger = new int[N];//記錄是否可能為裁判,0表示不可能,1表示可能,2表示確定
            ??????????? for (int i=0; i<N; i++)
            ????????????????? judger[i] = 0;
            ?????????????????
            ??????????? int n = 0;//累計(jì)比賽場(chǎng)數(shù)
            ??????????? int min = n;//存儲(chǔ)能夠確定誰(shuí)是裁判的最少場(chǎng)數(shù)
            ??????????? while (!in.eof() && n < M)//讀入比賽結(jié)果信息
            ??????????? {
            ????????????????? char data[3]; //存儲(chǔ)比賽選手編號(hào)和結(jié)果

            ????????????????? in >> data[0];
            ????????????????? in >> data[1];
            ????????????????? in >> data[2];
            ???????????????? // cout << data[0] << ' ' << data[1] << ' ' << data[2] << endl;
            ????????????????? n++;
            ????????????????? int flag = (data[1]=='<')? 1 :((data[1]=='=')? 2 : 3);//分別用1,2,3表示負(fù),平,勝
            ?????????????????
            ????????????????? if (players[data[0]-'0'][data[2]-'0'] == 0)//若a,b未對(duì)局過(guò),存儲(chǔ)比賽結(jié)果
            ????????????????? {
            ??????????????????????? players[data[0]-'0'][data[2]-'0'] = flag;
            ??????????????????????? players[data[2]-'0'][data[0]-'0'] = 4 - flag;
            ????????????????? }
            ????????????????? else if (players[data[0]-'0'][data[2]-'0'] != flag)//若a,b已對(duì)局過(guò),且比賽結(jié)果不同
            ????????????????? {
            ??????????????????????? if (judger[data[0]-'0'] == 0) //a有可能為裁判
            ????????????????????????????? judger[data[0]-'0'] = 1;
            ??????????????????????? else if (judger[data[0]-'0'] == 1)//a就是裁判
            ??????????????????????? {
            ????????????????????????????? judger[data[0]-'0'] = 2;
            ????????????????????????????? min = n;
            ??????????????????????? }
            ???????????????????????
            ??????????????????????? if (judger[data[2]-'0'] == 0) //b有可能為裁判
            ????????????????????????????? judger[data[2]-'0'] = 1;
            ??????????????????????? else if (judger[data[2]-'0'] == 1) //a就b是裁判
            ??????????????????????? {
            ????????????????????????????? judger[data[2]-'0'] = 2;
            ????????????????????????????? min = n;
            ??????????????????????? }
            ????????????????? }
            ???????????????? // cout << "players["<<data[0]-'0'<<"]["<<data[2]-'0'<<"]="<<players[data[0]-'0'][data[2]-'0']<<endl;
            ??????????? }
            ??????????? int temp1 = 0; //記錄judger[i]=1出現(xiàn)的次數(shù)
            ??????????? int temp2 = 0; //記錄judger[i]=2出現(xiàn)的次數(shù)
            ??????????? int answer;
            ??????????? for (int i=0; i<N; i++)
            ??????????? {
            ????????????????? //cout << judger[i] << ' ';
            ????????????????? if (judger[i] == 1)
            ?????????????????????? temp1++;

            ????????????????? if (judger[i] == 2)
            ????????????????? {
            ?????????????????????? temp2++;
            ?????????????????????? answer = i;
            ????????????????? }
            ??????????? }
            ??????????? cout << endl;
            ??????????? if (temp1 <= 2 && temp2 == 0)
            ????????????????? cout << -2 << endl;
            ??????????? else? if (temp1 <= 2 && temp2 == 1)
            ????????????????? cout << answer << ' ' << min << endl;
            ??????????? else? if (temp1 > 2)
            ????????????????? cout << -1 << endl;
            ?????????????????
            ??????????? delete []judger;
            ????? }

            ??? in.close(); //關(guān)閉文件
            }

            ?

            Posted on 2006-05-30 13:59 夢(mèng)想飛揚(yáng) 閱讀(600) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            伊人久久大香线焦综合四虎| 欧美亚洲日本久久精品| 久久精品国产色蜜蜜麻豆| 久久亚洲国产成人影院网站| 亚洲精品乱码久久久久久久久久久久 | 亚洲中文久久精品无码ww16 | 亚洲欧洲日产国码无码久久99| 久久国产精品99国产精| 久久99国产一区二区三区| 狠狠色婷婷久久综合频道日韩 | 久久精品国产福利国产秒| 一本大道久久东京热无码AV| 国产精品久久永久免费| 中文字幕精品久久久久人妻| 久久精品成人国产午夜| 国产成人精品综合久久久| 久久久久国产一级毛片高清板| 99精品国产综合久久久久五月天| 51久久夜色精品国产| 久久久久免费看成人影片| 开心久久婷婷综合中文字幕| 亚洲国产成人久久综合一| 热re99久久精品国99热| 久久成人小视频| 国产99久久久国产精免费| 国产精品一久久香蕉国产线看 | 激情五月综合综合久久69| 久久久久女人精品毛片| 久久久噜噜噜www成人网| 久久AV高潮AV无码AV| 久久人人爽人人爽人人片av麻烦 | 国产精品久久久久影院色 | 国产精品成人久久久久三级午夜电影 | 精品久久久久久无码不卡| 久久精品国产一区二区三区不卡| 久久九九全国免费| 亚洲国产精品久久久久| 久久国产精品免费| 久久精品中文字幕第23页| 天天综合久久一二三区| 深夜久久AAAAA级毛片免费看|