HDOJ 1723 Distribute Message


Distribute Message

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 1102    Accepted Submission(s): 489


Problem 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 1
4 2
0 0
 

Sample Output
1
3
Hint
4 1 : A->B->C->D
4 2 : A->B->C->D, A->C->D, A->B->D
 

Author
威士忌
 

Source
 

Recommend
lcy
 



#include <iostream>
#include <cstring>
#include <cstdio>

using namespace std;

int dp[33];
int n,m;

int  main()
{
while(cin>>n>>m)
{
    if(n==0&&m==0) break;
    memset(dp,0,sizeof(dp));
    dp[1]=1;

    if(n>1&&m==0)
        printf("0\n");
    else
    {
    for(int i=2;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
         if(i-j>0)
            dp+=dp[i-j];
    }
/*
    for(int i=0;i<=n+1;i++)
        cout<<dp<<",";
    cout<<endl;
*/
    printf("%d\n",dp[n]);
    }
}

    return 0;
}





posted @ 2013-06-16 09:05  码代码的猿猿  阅读(145)  评论(0编辑  收藏  举报