传球游戏(洛谷-P1057)
生活随笔
收集整理的這篇文章主要介紹了
传球游戏(洛谷-P1057)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目描述
上體育課的時候,小蠻的老師經(jīng)常帶著同學(xué)們一起做游戲。這次,老師帶著同學(xué)們一起做傳球游戲。
游戲規(guī)則是這樣的:?n 個同學(xué)站成一個圓圈,其中的一個同學(xué)手里拿著一個球,當(dāng)老師吹哨子時開始傳球,每個同學(xué)可以把球傳給自己左右的兩個同學(xué)中的一個(左右任意),當(dāng)老師再次吹哨子時,傳球停止,此時,拿著球沒有傳出去的那個同學(xué)就是敗者,要給大家表演一個節(jié)目。
聰明的小蠻提出一個有趣的問題:有多少種不同的傳球方法可以使得從小蠻手里開始傳的球,傳了?m?次以后,又回到小蠻手里。兩種傳球方法被視作不同的方法,當(dāng)且僅當(dāng)這兩種方法中,接到球的同學(xué)按接球順序組成的序列是不同的。比如有三個同學(xué)?1?號、?2?號、?3?號,并假設(shè)小蠻為?1?號,球傳了?3?次回到小蠻手里的方式有?1?->?2?->?3?->?1?和?1?->?3?->?2?->?1?,共?2?種。
輸入輸出格式
輸入格式:
一行,有兩個用空格隔開的整數(shù)?n,m(3≤n≤30,1≤m≤30)?。
輸出格式:
1?個整數(shù),表示符合題意的方法數(shù)。
輸入輸出樣例
輸入樣例#1:
3 3
輸出樣例#1:
2
源代碼
#include<iostream> using namespace std; int main() {int dp[40][40]={0};int n,m;int i,j,a,b;cin>>n>>m;dp[0][1]=1;//設(shè)小蠻位置為1,則初值為1for(i=1;i<=m;i++)//從1次到m次{for(j=1;j<=n;j++)//從位置1到位置n{a=j-1;//左位為當(dāng)前位置-1if(a==0) a=n;//若左位超出范圍,令其為nb=j+1;//右位為當(dāng)前位置+1if(b==n+1) b=1;//若右位超出范圍,令其為1dp[i][j]=dp[i-1][a]+dp[i-1][b];//第i次傳球到位置j的方案數(shù)=第i-1次j位的左位方案數(shù)+第i-1次j為右位方案數(shù)}}cout<<dp[m][1]<<endl;return 0; }?
總結(jié)
以上是生活随笔為你收集整理的传球游戏(洛谷-P1057)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 谁考了第k名(信息学奥赛一本通-T117
- 下一篇: 2的幂次方表示(信息学奥赛一本通-T12