• <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>

            /*3.變態比賽規則
            為了促進各部門員工的交流,百度舉辦了一場全公司范圍內的“拳皇”(百度內部最流行的格斗游戲)友誼賽,負責組織這場比賽的是百度的超級“拳皇”迷W.Z。W.Z不想用傳統的淘汰賽或者循環賽的方式,而是自己制定了一個比賽規則。


            由于一些員工(比如同部門或者相鄰部門員工)平時接觸的機會比較多,為了促進不同部門之間的交流,
            W.Z希望員工自由分組。不同組之間的每兩個人都會進行一場友誼賽而同一組內的人之間不會打任何比賽。


            比如4個人,編號為1~4,如果分為兩個組并且1,2一個組,3,4一個組,那么一共需要打四場比賽:
            1 vs 3,1 vs 4,2 vs 3,2 vs 4。 而如果是1,2,3一組,4單獨一組,那么一共需要打三場比賽:
            ????? 1 vs 4,2 vs 4,3 vs 4。


            很快W.Z意識到,這樣的比賽規則可能會讓比賽的場數非常多。W.Z想知道如果有N個人,
            通過上面這種比賽規則,總比賽場數有可能為K場嗎?比如3個人,如果只分到一組則不需要比賽,
            如果分到兩組則需要2場比賽,如果分為三組則需要3場比賽。但是無論怎么分都不可能恰需要1場比賽。


            相信作為編程高手的你一定知道該怎么回答這個問題了吧? 那么現在請你幫助W.Z吧。


            輸入要求:
            每行為一組數據,包含兩個數字 N, K(0<N<=500, K>=0)。例:
            2 0
            2 1
            3 1
            3 2

            ?

            輸出要求:
            對輸入的N,K 如果N個員工通過一定的分組方式可以使比賽場數恰好為K,則輸出"YES",否則輸出"NO"
            (請全部使用大寫字母),每組數據占一行。例:
            YES
            YES
            NO
            YES

            */
            /*
            算法分析:采用遞歸的方法,原理較簡單,大家看源碼即可。
            */

            /*
            ? Name:
            ? Copyright:
            ? Author:
            ? Date: 27-05-06 15:37
            ? Description:
            */

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

            using namespace std;

            const int MAX = 100;
            void Readata(const char *filename);
            bool check(long n, long k);

            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 ;?? //結束程序執行

            ????? while (!in.eof())
            ????? {
            ??????????? long data[2];

            ??????????? in >> data[0];
            ??????????? in >> data[1];
            ??????????? //cout << data[0] << ' ' << data[1] << endl;

            ??????????? if (check(data[0], data[1]))
            ????????????????? cout << "YES" << endl;
            ??????????? else
            ????????????????? cout << "NO" << endl;
            ????? }

            ??? in.close(); //關閉文件
            }
            bool check(long n, long k)
            {
            ??? bool flag = false;
            ??? int i;
            ??? if(k == 0) //可能? 。。。1
            ??????? return true;
            ??? if(n==0 && k || k<0)? //不可能 。。。2
            ??????? return false;
            ??? for(i=1; i<n && !flag; i++) //i表示將被減掉的小組的人數,每少一個由i個人組成的組就會少(n-i) * i場比賽
            ??????? flag = check(n-i,k - (n-i) * i);? //不斷的減少小組數和對應減少的比賽次數,直到出現1或2的情況 (出現可能的情況也會終止分析)
            ??? return flag;
            }

            Posted on 2006-05-30 13:56 夢想飛揚 閱讀(588) 評論(1)  編輯 收藏 引用

            Feedback

            # re: 我解百度之星題目之" 變態比賽規則 "  回復  更多評論   

            2006-06-04 20:57 by ???
            貴人的時間復雜度是不是有點高啊
            我覺得會超時!??!
            久久精品视频91| 亚洲色婷婷综合久久| 久久久精品免费国产四虎| 久久精品国产色蜜蜜麻豆| 亚洲精品视频久久久| 色偷偷88888欧美精品久久久| 国产亚洲精品自在久久| 亚洲性久久久影院| 狠狠狠色丁香婷婷综合久久俺| 精品无码久久久久久国产| 亚洲色大成网站www久久九| 亚洲一区二区三区日本久久九| 久久这里只有精品首页| 99久久99久久精品国产片| 亚洲中文久久精品无码| 欧美一级久久久久久久大片| 国内精品久久国产大陆| 亚洲va久久久噜噜噜久久狠狠| 亚洲综合久久综合激情久久 | 国产精品青草久久久久福利99| 午夜精品久久久久久影视riav| 国产午夜久久影院| AV无码久久久久不卡蜜桃| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 久久精品国产99久久丝袜| 国产午夜精品久久久久免费视 | 99久久成人国产精品免费 | 国产香蕉久久精品综合网| 国产精品熟女福利久久AV| 久久96国产精品久久久| 国产精品久久亚洲不卡动漫| 国产69精品久久久久9999APGF| 一级a性色生活片久久无| 久久久久亚洲AV成人网人人软件| 99精品久久精品| 青青热久久综合网伊人| 91精品无码久久久久久五月天 | 欧美777精品久久久久网| 国产亚州精品女人久久久久久| 99久久伊人精品综合观看| 国产亚洲色婷婷久久99精品91|