蒜頭君的新遊戲 計蒜客

2021-10-19 19:17:21 字數 1422 閱讀 5358

目錄

題目  題解

工作空閒之餘,蒜頭君經常帶著同事們做遊戲,最近蒜頭君發明了乙個好玩的新遊戲:

n 位同事圍成乙個圈,同事

a 手裡拿著乙個兔妮妮的娃娃。蒜頭君喊遊戲開始,每位手裡拿著娃娃的同事可以選擇將娃娃傳給左邊或者右邊的同學,當蒜頭君喊遊戲結束時,停止傳娃娃。此時手裡拿著娃娃的同事即是敗者。

玩了幾輪之後,蒜頭君想到乙個問題:有多少種不同的方法,使得從同事

a 開始傳娃娃,傳了

m 次之後又回到了同事

a 手裡。兩種方法,如果接娃娃的同事不同,或者接娃娃的順序不同均視為不同的方法。例如

1−>2−>3−>1

和1−>3−>2−>1

是兩種不同的方法。

輸入格式

輸入一行,輸入兩個整數n,

m(3≤

n≤30,1≤

m≤30)

,表示一共有

n 位同事一起遊戲,一共傳

m 次娃娃。

輸出格式

輸出一行,輸出乙個整數,表示一共有多少種不同的傳娃娃方法。

輸出時每行末尾的多餘空格,不影響答案正確性

要求使用「檔案輸入輸出」的方式解題,輸入檔案為

game.in

,輸出檔案為

game.out

樣例輸入

3 3

樣例輸出2

知識點:dp

分析:我們首先用dp[i][j]表示第i次傳到第j個人的總次數,然後得出dp狀態轉移方程:dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1];第i次傳到j這個人的次數=第i-1次傳到j-1這個人和j+1這個人,注意第0次傳到第乙個人的次數為1,要預判的,dp中還有特殊情況:1這個人和n這個人的次數計算,畢竟題意中這是乙個,但陣列是線性的。

**:

#include#includeusing namespace std;

const int noip=50;//祝考noip的人一切順利(例如我)

int dp[noip][noip];//dp[i][j]表示第i次傳到第j個人的總次數

int main()

if (j==n)

dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1];//從兩方的人傳到此人手裡

} }cout

}

計蒜客習題 蒜頭君的新遊戲

工作空閒之餘,蒜頭君經常帶著同事們做遊戲,最近蒜頭君發明了乙個好玩的新遊戲 n 位同事圍成乙個圈,同事 a 手裡拿著乙個兔妮妮的娃娃。蒜頭君喊遊戲開始,每位手裡拿著娃娃的同事可以選擇將娃娃傳給左邊或者右邊的同學,當蒜頭君喊遊戲結束時,停止傳娃娃。此時手裡拿著娃娃的同事即是敗者。玩了幾輪之後,蒜頭君想...

蒜頭君面試 計蒜客

蒜頭君來蒜廠面試的時候,曾經遇到這樣乙個面試題 給定 n nn 個整數,求裡面出現次數最多的數,如果有多個重複出現的數,求出值最大的乙個。當時可算是給蒜頭君難住了。現在蒜頭君來考考你。輸入格式 第一行輸入乙個整數 n 1 n 100000 n 1 le n le 100000 n 1 n 1000 ...

計蒜客 蒜頭君倒水

問題描述 蒜頭君倒了 2 杯熱水在杯子裡面,第一杯裡面有 a 毫公升,第二杯裡面有 b 毫公升。水太熱了,蒜頭君決定通過輪流倒水的方式來讓水冷下來。每次倒水蒜頭君把第一杯的 x 的水倒入第二杯,把第二杯的 y 的水倒入第一杯 蒜頭君有奇特的方法,能讓這一過程是同是發生的,沒有先後之分 蒜頭君一直重複...