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\n") ;

        else printf("%d\n",dp[9][s]) ;

    }

    return 0;

}
View Code

 

你可能感兴趣的:(function)