动态规划-整数拆分
作者:
hdchieh | 来源:发表于
2019-03-19 12:58 被阅读0次
对于奇数,其中必有1这个拆分所以 f(2n+1)=f(2n)
对于偶数,分为两种情况,
111111.拆分中含有1,则与奇数情况相同 f(2n+2)= f(2n+1)=f(2n)
22222.拆分中不含1,所有数除以2, f(2n)=f(n)
所以 f(2n)=f(2n-2)+f(n)
边界条件为f(1)=1
#include<stdio.h>
#include<stdlib.h>
#define MIX 1000000000
int main(){
int n;
int dp[1000001];
scanf("%d",&n);
dp[0]=1;
for(int i=1;i<=n;i++){
if(i%2==0)
dp[i]=(dp[i-2]+dp[i/2])%MIX;
else
dp[i]=dp[i-1];
}
printf("%d\n",dp[n]);
}
本文标题:动态规划-整数拆分
本文链接:https://www.haomeiwen.com/subject/zgtsmqtx.html
网友评论