题意:一队人传递消息,一个人可以向后传给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