360校招——最后贏家(C++)

? 文章鏈接: www.mengyingjie.com/archives/39/ ?

最后贏家

時間限制:C/C++語言 1000MS;其他語言 3000MS
內(nèi)存限制:C/C++語言 65536KB;其他語言 589824KB

題目描述:

最強的不一定是最后的贏家。

某賽事有n名選手參加,但是不同于其他的比賽,本比賽采取的是擂臺賽的形式,n名選手排成一排,每次隊伍的第一位和第二位選手進行比賽,輸?shù)囊环綍诺疥犖病?/p>

當某位選手取得m連勝時,他將成為最后的贏家,且游戲結(jié)束,請問截止到游戲結(jié)束,共會進行多少次比賽。

兩位選手的比賽結(jié)果由他們的戰(zhàn)斗力決定,n位選手的戰(zhàn)斗力是一個1~n的排列,也就是說他們的戰(zhàn)斗力兩兩不同,不會有平局的情況。

輸入

輸入第一行包含兩個正整數(shù)n,m,分別代表參賽選手數(shù)量和取得連勝的要求。(1<=n<=100000,1<=m<=10^9)

輸入第二行包含n個正整數(shù),中間用空格隔開,第i個數(shù)表示隊伍的第i位選手的戰(zhàn)斗力,整體是一個1~n的排列。

輸出

輸出僅包含一個正整數(shù),表示截止到游戲終止,共進行多少場比賽。

樣例輸入

4 2
1 3 2 4

樣例輸出

2

提示

樣例解釋
顯然第一局應該是戰(zhàn)斗力為3的選手獲勝,第二局同樣是戰(zhàn)斗力為3的選手獲勝,2連勝終止游戲,所以答案是2。此時若修改m為3,則結(jié)果是5。

代碼

解題思路寫在代碼的注釋里

#include <iostream>
#include <queue>

using namespace std;

int main(){
    //n,m,分別代表參賽選手數(shù)量和取得連勝的要求
    //cnt記錄作為基準選手的勝場數(shù)
    int n, m, h, y, cnt;
    //cnt2表示共進行了多少場比賽
    int cnt2 = 0;
    //定義隊列來存儲每位選手的戰(zhàn)斗力
    queue <int> q;
    cin >> n >> m;
    for(int i = 0; i < n; i++){
        //將戰(zhàn)斗力存儲在隊列中
        cin >> h;
        q.push(h);
    }
    //取出第一個隊列當作基準
    h = q.front();
    q.pop();
    //默認勝場為零
    cnt = 0;
    while(cnt < m){
        //一次循環(huán)代表進行一場比賽
        cnt2 ++;
        y = q.front();
        //將基準h與現(xiàn)在隊首的y相比較
        if(h > y){
            //如果h勝了,他繼續(xù)當基準,然后他的勝場+1
            cnt++;
            //將隊首的y取出,放到隊列
            q.pop();
            q.push(y);
        }
        else{
            //如果y勝了,把原來的h放到隊尾,然后將y作為基準,他的勝場置為1,
            q.pop();
            q.push(h);
            h = y;
            cnt = 1;
        }
    }
    cout << cnt2 << endl;
    return 0;
}

遇到此類問題,但看了文章還是未解決,
評論或加 QQ:781378815

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 在C語言中,五種基本數(shù)據(jù)類型存儲空間長度的排列順序是: A)char B)char=int<=float C)ch...
    夏天再來閱讀 4,035評論 0 2
  • 地址:2017年校招全國統(tǒng)一模擬筆試(第三場)編程題集合 變換次數(shù) (AC) 牛牛想對一個數(shù)做若干次變換,直到這個...
    faremax閱讀 1,007評論 0 1
  • 計算機二級C語言上機題庫(南開版) 1.m個人的成績存放在score數(shù)組中,請編寫函數(shù)fun,它的功能是:將低于平...
    MrSunbeam閱讀 6,611評論 1 42
  • A 本周的算法題,給定一個num,求0~num所有數(shù)二進制表示后,各數(shù)字中'1'的個數(shù)。 2的正整數(shù)冪轉(zhuǎn)化為二進制...
    shirakiko閱讀 223評論 0 1
  • 這個“洗澡”不是給自己洗,而是給小貓們洗澡。 這個澡洗得可不一般,如果你一不小心,就會有被貓抓傷的危險,只要一不小...
    啦啦zq閱讀 144評論 0 1

友情鏈接更多精彩內(nèi)容