HDU 1723 Distribute Message--DP--(特殊意义)

来源:互联网 发布:linux配置java环境 编辑:程序博客网 时间:2024/06/02 05:30

题意:n个人排成一队,从头开始往后传递消息,第i号人能直接传给第 i+1,i+2.....i+m号,求从头传到尾共有多少种传法

分析:可以知道每个人的选择都影响最终的顺序,有一种环环相扣的关联在,所以用dp

dp[i]表示从第i号人到尾的传法数,方程:dp[j]=dp[i]+dp[j] 其中 i - j < = m

代码:

#include<iostream>#include<cstring>using namespace std;int dp[100],n,m;int main(){    while(cin>>n>>m){        if(!n&&!m) break;        memset(dp,0,sizeof(dp));        dp[n]=1;        for(int i=n;i>0;i--){            for(int j=i-1;j>0;j--){                if(i-j<=m) dp[j]+=dp[i];             }        }        cout<<dp[1]<<endl;    }}


0 0
原创粉丝点击