Distribute Message

来源:互联网 发布:极度深寒游戏知乎 编辑:程序博客网 时间:2024/06/02 04:48

Description

The contest’s message distribution is a big thing in prepare. Assuming N students stand in a row, from the row-head start transmit message, each person can transmit message to behind M personals, and how many ways could row-tail get the message? 
 

Input

Input may contain multiple test cases. Each case contains N and M in one line. (0<=M<N<=30) 
When N=0 and M=0, terminates the input and this test case is not to be processed. 
 

Output

Output the ways of the Nth student get message. 
 

Sample Input

4 14 20 0
 

Sample Output

13

Hint

4 1 : A->B->C->D 4 2 : A->B->C->D, A->C->D, A->B->D 
 
题意:n个人,每次能向相邻m个人传递消息,问传到第n个人有多少种方法


#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#include<cmath>#include<queue>#include<stack>using namespace std;const int MAXN=30+9;const int MAXM=50+9;const int inf=0x3f3f;int dp[MAXN];int n,m;int main(){    while(~scanf("%d%d",&n,&m))    {        if(n==0&&m==0) break;        memset(dp,0,sizeof(dp));        dp[1]=1;        for(int i=1; i<=n; i++)        {            for(int j=1; j<=m; j++)            {                if((i+j)<=n)                    dp[i+j]+=dp[i];            }        }        printf("%d\n",dp[n]);    }    return 0;}






原创粉丝点击