zoukankan      html  css  js  c++  java
  • 8.10-Day1T1-数字(number)

    数字number

    题目大意

    给定n,k,s,从1到n中取出k个数,使其之和等于s

    求可行的方案数(模1e9+7)

    题解

    一眼dp,于是我去写了dfs,带着少的可怜的剪枝,快乐的tle着...

    设 f[ i ][ j ][ q ] 表示在前 i 个数中选 j 个使其和为 q 的方案数
    则 f [ i ][ j ][ q ]=f[ i-1 ][ j ][ q ]+f[ i-1 ][ j-1 ][ q-i ](j>=1)
    f [ i ][ j ][ q ]=f[ i-1 ][ j ][ q ](j=0)
    f[ i-1 ][ j ][ q ]表示不选第 i 个,f[ i-1 ][ j-1 ][ q-i ]表示选第 i 个
    初始化f[0][0][0] = 1
    最终答案为 f[ n ][ k ][ s ]
     
    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    int n,h,s;
    int f[55][55][2005];
    const int mod = 1e9 + 7;
    int main()
    {
        freopen("number.in","r",stdin);
        freopen("number.out","w",stdout);
        scanf("%d%d%d",&n,&h,&s);
        f[0][0][0] = 1;
        for(int i = 1;i <= n;i++)
            for(int j = 0;j <= i;j++)
                for(int k = 0;k <= s;k++)
                    if(j >= 1)
                        f[i][j][k] = (f[i -1][j][k] + f[i - 1][j - 1][k - i]) % mod;
                    else
                        f[i][j][k] = f[i - 1][j][k] % mod;
        printf("%d",f[n][h][s]);
        return 0;
    }
    数字number
  • 相关阅读:
    空气中超声衰减
    CSS文档流
    新华三面试经历
    HTML5实现一个时钟动画
    HTML5实现立方体及透视效果
    JS对象与包装类
    JS作用域、执行上下文、递归与闭包
    jQuery初体验—实现左右切换图片
    JS数组练习
    jQuery之图片提示效果
  • 原文地址:https://www.cnblogs.com/darlingroot/p/11331740.html
Copyright © 2011-2022 走看看