URAL 1353 Milliard Vasya's Function(DP)

题目链接

题意 : 让你找出1到10^9中和为s的数有多少个。

思路 : 自己没想出来,看的题解,学长的题解报告

题解报告

//URAL 1353
#include <iostream>
#include <stdio.h>
#include <string.h>

using namespace std;

int dp[11][83] ;

int main()
{
    int s ;
    memset(dp,0,sizeof(dp)) ;
    for(int i = 1 ; i < 10 ; i++)
    {
        dp[1][i] = 1 ;
        dp[i][0] = 1 ;
    }
    for(int i = 2 ; i < 10 ; i++)
        for(int j = 1 ; j < 82 ;  j++)
            for(int k = 9 ; k >= 0 ; k--)
                if(j >= k)
                    dp[i][j] += dp[i-1][j-k] ;
    while(~scanf("%d",&s))
    {
        if(s == 1)
            printf("10
") ;
        else printf("%d
",dp[9][s]) ;
    }
    return 0;
}
View Code
原文地址:https://www.cnblogs.com/luyingfeng/p/3653009.html