据说是水DP Lucky tickets POJ 2346

来源:互联网 发布:mac系统怎么装steam 编辑:程序博客网 时间:2024/05/22 10:31

题目要求给一个N位数,计算共有多少前N/2位数字的和与后N/2位数字的和相同的数
提示
1)既然前N/2位与后N/2位相比,就可以简化成计算和为f[i][j]---和为j的i位数
2)如果N为奇数,则需乘10
#include <stdio.h>#include <string.h>int dp[6][50];int main(){int n;int i,j,k;int sum;memset(dp,0,sizeof(dp));dp[0][0]=1;for(i=1;i<=5;i++)for(j=0;j<=i*9;j++)               //j表示这一项的和的值for(k=0;k<=9;k++)         //表示这一次加入的值{if(k>j)break;dp[i][j]+=dp[i-1][j-k];}while(scanf("%d",&n)!=-1){sum=0;for(i=0;i<50;i++)sum+=(dp[n/2][i]*dp[n/2][i]);if(n%2==1)sum*=10;printf("%d\n",sum);}return 0;}

0 0
原创粉丝点击