美文网首页
动态规划-整数拆分

动态规划-整数拆分

作者: 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