递推型DP——USACO 2009 February Silver bull and cow

题意:N头牛 公牛与公牛之间最小间隔K头母牛
之前用排列组合的方法去思考,数据大,不能解
i<=k
f[0]=i+1
当i头牛是母牛时,没什么限制,f[i]+=f[i-1]
当i头是公牛时,之前要有K头奶牛,f[i]+=f[i-k-1]
View Code
#include<stdio.h>

int dp[100009];

int main()
{
int n,k;
while(scanf("%d%d",&n,&k)!=EOF)
{
int i;
for(i=0;i<=n;i++)
{
if(i<=k)
dp[i]
=i+1;
else
dp[i]
=(dp[i-1]+dp[i-k-1])%5000011;
}
printf(
"%d\n",dp[n]);
}
}

  

原文地址:https://www.cnblogs.com/huhuuu/p/2162419.html