• <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 ???
            貴人的時間復雜度是不是有點高啊
            我覺得會超時!!!
            久久久久亚洲精品日久生情| 99国内精品久久久久久久| 久久综合九色综合久99| 精品久久久久久久久久中文字幕| 国产日韩久久免费影院| 欧美日韩精品久久免费| 久久精品亚洲中文字幕无码麻豆| 国産精品久久久久久久| 欧美日韩精品久久久久| 久久不射电影网| 免费无码国产欧美久久18| 国产精品久久午夜夜伦鲁鲁| 欧美激情精品久久久久久久九九九| 亚洲精品tv久久久久久久久久| 精品无码久久久久国产动漫3d| 久久国产精品99久久久久久老狼 | 久久久91人妻无码精品蜜桃HD| 久久国产精品波多野结衣AV | 久久e热在这里只有国产中文精品99| 亚洲精品成人网久久久久久| 大伊人青草狠狠久久| 无码任你躁久久久久久老妇App| 久久精品aⅴ无码中文字字幕不卡 久久精品aⅴ无码中文字字幕重口 | 亚洲精品国产自在久久| 国产AV影片久久久久久 | 久久综合丁香激情久久| 国产精品99久久久久久宅男小说| 狠色狠色狠狠色综合久久 | 成人精品一区二区久久| 久久99国产综合精品女同| 亚洲女久久久噜噜噜熟女| 亚洲婷婷国产精品电影人久久| 成人精品一区二区久久| 成人亚洲欧美久久久久| 婷婷久久综合九色综合98| 久久精品99久久香蕉国产色戒 | 久久中文字幕精品| 亚洲国产成人久久精品99| 欧美日韩精品久久久久| 伊人久久大香线蕉精品不卡| 久久一区二区免费播放|