zoukankan      html  css  js  c++  java
  • 背包问题 codevs2210 数字组合

    数字组合

    题目描述 Description

    在N个数中找出其和为M的若干个数。先读入正整数N和M, 再读入N个正数(可以有相同的数字,每个数字均在1000以内), 在这N个数中找出若干个数, 使它们的和是M, 把满足条件的数字组合都找出来以统计组合的个数,输出组合的个数(不考虑组合是否相同)。要求你的程序运行时间不超过1秒。

    输入描述 Input Description

    第一行是两个数字,表示N和M。
    第二行起是N个数。

    输出描述 Output Description

    就一个数字,表示和为M的组合的个数。

    样例输入 Sample Input

    4 4
    1 1 2 2

    样例输出 Sample Output

    3

    数据范围及提示 Data Size & Hint

    1<N<100

    1<M<10000

    大水题

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<cstring>
     4 #include<algorithm>
     5 using namespace std;
     6 int n,m;
     7 int f[10010],a[110];
     8 int main(){
     9     scanf("%d%d",&n,&m);
    10     for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    11     f[0]=1;
    12     for(int i=1;i<=n;i++)
    13         for(int j=m;j>=0;j--)
    14             if(f[j]&&j+a[i]<=m) f[j+a[i]]+=f[j];
    15     printf("%d
    ",f[m]);
    16     return 0; 
    17 }
  • 相关阅读:
    Java操作数据库——使用JDBC连接数据库
    MySQL入门——Linux下安装后的配置文件
    Linux上搭建SVN服务
    PHP包管理工具composer
    收藏博文
    Linux上软件安装
    nginx配置详解
    Linux文本编辑器Vim使用
    Linux常用命令整理
    Linux增加swap空间
  • 原文地址:https://www.cnblogs.com/zwube/p/7153093.html
Copyright © 2011-2022 走看看