zoukankan      html  css  js  c++  java
  • #DP# ----- OpenJudge数字组合

    OpenJudge 2985:数字组合

    总时间限制:1000ms  内存限制: 65536kB
    描述
    有n个正整数,找出其中和为t(t也是正整数)的可能的组合方式。如:
    n=5,5个数分别为1,2,3,4,5,t=5;
    那么可能的组合有5=1+4和5=2+3和5=5三种组合方式。
    输入
    输入的第一行是两个正整数n和t,用空格隔开,其中1<=n<=20,表示正整数的个数,t为要求的和(1<=t<=1000)
    接下来的一行是n个正整数,用空格隔开。
    输出
    和为t的不同的组合方式的数目。
    样例输入
    5 5
    1 2 3 4 5
    样例输出
    3
    背包。
     1 #include<stdio.h>
     2 int n,m;
     3 int d[25],f[25][1010];
     4 
     5 int main(){
     6     scanf("%d%d",&n,&m);
     7     for(int i=1;i<=n;++i){
     8         scanf("%d",&d[i]);
     9         f[i][d[i]]=1;//前i个数组成d[i]方案数都=1(自己组成)
    10     }
    11     for(int i=2;i<=n;++i){
    12         for(int j=1;j<=d[i];++j)f[i][j]+=f[i-1][j];//第i个数不取
    13         for(int j=d[i]+1;j<=m;++j)
    14             f[i][j]+=(f[i-1][j]+f[i-1][j-d[i]]);//1-(i-1)个数已组成j 2-i个数组成j,即(i-1)个数组成(j-d[i])
    15     }
    16     printf("%d",f[n][m]);
    17     return 0;
    18 }
    19 //f[i][j]前i个数(不要求i个数全部取)能组成j的方案数
  • 相关阅读:
    cf D. Vessels
    cf C. Hamburgers
    zoj 3758 Singles' Day
    zoj 3777 Problem Arrangement
    zoj 3778 Talented Chef
    hdu 5087 Revenge of LIS II
    zoj 3785 What day is that day?
    zoj 3787 Access System
    判断给定图是否存在合法拓扑排序
    树-堆结构练习——合并果子之哈夫曼树
  • 原文地址:https://www.cnblogs.com/wjting/p/6008974.html
Copyright © 2011-2022 走看看