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