• tyvj1096 数字组合


    描述

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

    输入格式

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

    输出格式

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

    测试样例1

    输入

    4 4 
    1 1 2 2

    输出

    3
    #include<iostream>
    #include<cstdio>
    #include<string>
    #include<cstring>
    #include<algorithm>
    using namespace std;
    int n,m,cnt,a[20005],f[20005];
    int main(){
        cin>>n>>m;
        for(int i = 1;i <= n;i++) scanf("%d",&a[i]);
        f[0] = 1;
        for(int i = 1;i <= n;i++){
            for(int j = m;j >= a[i];j--){
                f[j] += f[j - a[i]];
            }
        }
        cout<<f[m];
        return 0;
    }
  • 相关阅读:
    基本排序算法分析
    Linux内核浅谈
    Linux内核浅谈
    Linux内核浅谈
    淘宝架构技术的演变
    淘宝架构技术的演变
    淘宝架构技术的演变
    中间件小结
    中间件小结
    中间件小结
  • 原文地址:https://www.cnblogs.com/hyfer/p/5791399.html
Copyright © 2020-2023  润新知