动态规划习题,关系式推导和求模技巧

#include <stdio.h>
int dp[100001]= {0};
int main()
{
int n,i;
scanf("%d",&n);
int mod=100003;
dp[0]=dp[1]=dp[2]=dp[3]=1;
//dp[i]=dp[i-1]+dp[i-4]+dp[i-7]…
//dp[i-3]=dp[i-4]+dp[i-7]+dp[i-9]…i-3后面有的项和dp[i]是一样的
//dp[i]=dp[i-1]+dp[i-3]
for(i=4; i<=n; ++i)
dp[i]=(dp[i-1]+dp[i-3])%mod;//先加再mod和先mod再加结果一样 (a+b)%c=(a&c+b%c)%c 按照递归的思想,dp[i-1]和dp[i-3]之前都mod过了,他们求和再mod,等价于整个数组都先求和再mod

printf("%d",dp[n]);
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值