标签:
题意:
给一个正的不大于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\n",ans); }
标签:
原文地址:http://www.cnblogs.com/tun117/p/4902716.html