链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=269
求1~10^9间各位相加和为s的数的个数..
dp[i][j]:::前i位和为j的数字的个数
#include <iostream>
using namespace std;
int dp[11][90];
void vffun(void)
{
int i,j,k;
for(i=1;i<10;i++)
dp[1][i]=1;
for(i=1;i<10;i++)
for(j=1;j<=9*i;j++)
for(k=0;k<10&&k<=j;k++)
dp[i][j]=dp[i][j]+dp[i-1][j-k];
}
int main()
{
int s;
int ans;
vffun();
while(cin>>s)
{
ans=0;
if(s==1)
cout<<10<<endl;
else
{
for(int i=1;i<10;i++)
ans+=dp[i][s];
cout<<ans<<endl;
}
}
return 0;
}