贏球票 題目

2021-08-01 01:49:20 字數 1850 閱讀 8989

贏球票

某機構舉辦球票大獎賽。獲獎選手有機會贏得若干張球票。

主持人拿出 n 張卡片(上面寫著 1~n 的數字),打亂順序,排成乙個圓圈。

你可以從任意一張卡片開始順時針數數: 1,2,3…..

如果數到的數字剛好和卡片上的數字相同,則把該卡片收入囊中,從下乙個卡片重新數數。

直到再無法收穫任何卡片,遊戲結束。囊中卡片數字的和就是贏得球票的張數。

比如:

卡片排列是:1 2 3

我們從1號卡開始數,就把1號卡拿走。再從2號卡開始,但數的數字無法與卡片對上,

很快數字越來越大,不可能再拿走卡片了。因此這次我們只贏得了1張球票。

還不算太壞!如果我們開始就傻傻地從2或3號卡片數起,那就一張卡片都拿不到了。

如果運氣好,卡片排列是 2 1 3

那我們可以順利拿到所有的卡片!

本題的目標就是:已知順時針卡片序列。

隨便你從**開始數,求最多能贏多少張球票(就是收入囊中的卡片數字之和)

輸入資料:

第一行乙個整數n(n<100),表示卡片數目

第二行 n 個整數,表示順時針排列的卡片

輸出資料:

一行,乙個整數,表示最好情況下能贏得多少張球票

比如:

使用者輸入:

3 1 2 3

程式應該輸出:

1比如:

使用者輸入:

3 2 1 3

程式應該輸出:

6資源約定:

峰值記憶體消耗 < 256m

cpu消耗 < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入…」 的多餘內容。

所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。

注意: main函式需要返回0

注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。

注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。

提交時,注意選擇所期望的編譯器型別。

—————————–萌萌噠的分割線又來了,**如下————————————

注釋寫的比較亂

能力有限,思路較為粗糙,還望各路大神指教—-先謝過(逃不逃呢? 不會被打吧

#include

#include

int main()

; //已獲得卡片

scanf("%d",&n);

for(int i=1;i<=n;i++)

int step=1;

int ca_ss=1; //card_array下標

int ac_ss=1; //acquire 下標

while(ca_ss<=n) //從不同的卡片開始

}if(ca_ss>n) ca_ss=1; //迴圈

if(!ok) break;

}if(ca_ss<=n&&(step++)==card_array[ca_ss++])

//看是不是一樣的 一樣的就存在acquire裡面

if(ac_ss-1==n) break; // 全部都拿到了 退出迴圈

if(ca_ss>n) ca_ss=1;

}int temp=0;

for(int i=1;i//計算票數和

if(temp>sum) sum=temp;

ca_ss=ca_ss_temp+1; //開始下乙個

}printf("%d",sum);

return

0;}

藍橋杯題目 贏球票

問題描述 某機構舉辦球票大獎賽。獲獎選手有機會贏得若干張球票。主持人拿出 n 張卡片 上面寫著 1 n 的數字 打亂順序,排成乙個圓圈。你可以從任意一張卡片開始順時針數數 1,2,3.如果數到的數字剛好和卡片上的數字相同,則把該卡片收入囊中,從下乙個卡片重新數數。直到再無法收穫任何卡片,遊戲結束。囊...

藍橋杯歷屆試題 贏球票(模擬)

某機構舉辦球票大獎賽。獲獎選手有機會贏得若干張球票。主持人拿出 n 張卡片 上面寫著 1 n 的數字 打亂順序,排成乙個圓圈。你可以從任意一張卡片開始順時針數數 1,2,3 如果數到的數字剛好和卡片上的數字相同,則把該卡片收入囊中,從下乙個卡片重新數數。直到再無法收穫任何卡片,遊戲結束。囊中卡片數字...

第七屆藍橋杯(國賽) 贏球票

問題描述 某機構舉辦球票大獎賽。獲獎選手有機會贏得若干張球票。主持人拿出 n 張卡片 上面寫著 1 n 的數字 打亂順序,排成乙個圓圈。你可以從任意一張卡片開始順時針數數 1,2,3 如果數到的數字剛好和卡片上的數字相同,則把該卡片收入囊中,從下乙個卡片重新數數。直到再無法收穫任何卡片,遊戲結束。囊...