题意:一队人传递消息,一个人可以向后传给m个人,求最后一个人得到消息的方式有多少种。有向图求起点到终点有多少条路径模型。
分析:dp[i]表示第i个人得到消息的方式有dp[i]种,dp[i]=dp[i-1]+.....+dp[i-m]。求方式的状态转移方程基本上都是这个样子。
代码:
#include<iostream> #include<algorithm> using namespace std; int n,m; int dp[100]; void DP() { memset(dp,0,sizeof(dp)); dp[1]=1; for(int i=2;i<=n;i++){ for(int j=i-1;i-j<=m&&j>0;j--) dp[i]+=dp[j]; } } int main() { while(cin>>n>>m){ if(!n&&!m) break; DP(); cout<<dp[n]<<endl; } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
HDU 1723-Distribute Message-dp-(有向图路径模型)
原文地址:http://blog.csdn.net/ac_0_summer/article/details/46846373