zoukankan      html  css  js  c++  java
  • POJ 2346 【DP】

    题意:

    给一个正的不大于10的偶数n,求n个数字组成的数字串前n/2位和后n/2位的和相等的个数。

    思路:

    dp[i][j]由i位数组成的和为j的数字串的个数。

    dp[i][j]+=dp[i-1][j-k];

    最后排列组合一下。

    #include<stdio.h>
    long long dp[6][50];
    int main()
    {
        int n;
        scanf("%d",&n);
        for(int i=0;i<=9;i++)
        {
            dp[1][i]=1;
        }
        for(int i=2;i<=n/2;i++)
        {
            for(int j=n/2*9;j>=0;j--)
            {
                for(int k=0;k<=9;k++)
                {
                    if(j>=k)
                        dp[i][j]+=dp[i-1][j-k];
                }
            }
        }
        long long ans=0;
        for(int i=0;i<=n/2*9;i++)
        {
            ans+=dp[n/2][i]*dp[n/2][i];
        }
        printf("%I64d
    ",ans);
    }
  • 相关阅读:
    3.12
    3.11
    安卓开发
    安卓开发
    安卓开发
    安卓开发
    安卓开发
    安卓开发
    安卓开发
    安卓开发
  • 原文地址:https://www.cnblogs.com/tun117/p/4902716.html
Copyright © 2011-2022 走看看