J. Worm

來源:互聯網
上載者:User
                                                            J. WormTime Limit:1000msCase Time Limit:1000msMemory Limit:32768KB64-bit integer IO format: %I64d      Java class name: MainSubmitStatusPID:
6295 Font Size:自從見識了平安夜蘋果的漲價後,Lele就在他家門口水平種了一排蘋果樹,共有N棵。

突然Lele發現在左起第P棵樹上(從1開始計數)有一條毛毛蟲。為了看到毛毛蟲變蝴蝶的過程,Lele在蘋果樹旁觀察了很久。雖然沒有看到蝴蝶,但Lele發現了一個規律:每過1分鐘,毛毛蟲會隨機從一棵樹爬到相鄰的一棵樹上。

比如剛開始毛毛蟲在第2棵樹上,過1分鐘後,毛毛蟲可能會在第1棵樹上或者第3棵樹上。如果剛開始時毛毛蟲在第1棵樹上,過1分鐘以後,毛毛蟲一定會在第2棵樹上。

現在告訴你蘋果樹的數目N,以及毛毛剛開始所在的位置P,請問,在M分鐘後,毛毛蟲到達第T棵樹,一共有多少種行走方案數。
Input 本題目包含多組測試,請處理到檔案結束(EOF)。
每組測試佔一行,包括四個正整數N,P,M,T(含義見題目描述,0<N,P,M,T<100)
Output 對於每組資料,在一行裡輸出一共的方案數。
題目資料保證答案小於10^9
Sample Input

3 2 4 23 2 3 2
Sample Output
40Hint第一組測試中有以下四種走法:2->1->2->1->22->1->2->3->22->3->2->1->22->3->2->3->2 


解題思路:本題是簡單的動態規劃題目,只要找出動態方程即可。

動態方程:dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1];第i秒毛毛蟲爬到第j棵樹上的路勁數為dp[i][j],其值為上一秒毛毛蟲爬到第j-1棵樹的路勁樹加上上一秒毛毛蟲爬到第j+1棵樹上的路勁數之和。

第0秒時。爬到第p棵樹的路勁數為1,爬到其他樹上的路勁數都為0。其他時候按動態規劃的動態轉移方程推算便可。曆時m秒,毛毛蟲爬到第t棵樹的路勁數為dp[m][t]的值。

#include<stdio.h>#include<string.h>int main(){    int n,p,m,t;    int dp[102][102];    int i,j;    while(scanf("%d%d%d%d",&n,&p,&m,&t)!=EOF)    {        memset(dp,0,sizeof(dp));        dp[0][p]=1;        for(i=1; i<=m; i++)            for(j=1; j<=n; j++)                dp[i][j]=dp[i-1][j-1]+dp[i-1][j+1];        printf("%d\n",dp[m][t]);    }    return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.