1291:數字組合

 

【題目描述】

有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
// Created on 2020/2/19

/*#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <climits>*/
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
const int idata=1000+5;
const int inf=0x3f3f3f3f;
int n,m,t;
int minn=INT_MAX,maxx=INT_MIN;
ll sumfee[idata];
//int valu[idata],tim[idata];
int digit[idata];
int i,v,j;

inline void initial()
{
    for(i=1;i<=n;i++)
        cin>>digit[i];

    sumfee[0]=1;

    return ;
}

int main()
{
    cin>>n>>t;

    initial();

    for(i=1;i<=n;i++)
    {
        for(j=t;j>=digit[i];j--)//一定要逆序,否則就成了完全揹包了
        {
            sumfee[j]+=sumfee[j-digit[i]];
        }
    }

    cout<<sumfee[t]<<endl;
    return 0;
}

 

發佈了221 篇原創文章 · 獲贊 10 · 訪問量 9478
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章