dp专题 第十题 数字组合

来源:互联网 发布:蓝牙车载充电器 知乎 编辑:程序博客网 时间:2024/09/21 08:15

1、简单描述

 有n个正整数,找出其中和为正整数k的可能的组合方式。输出有多少种方案数?

2、思路

#include<bits/stdc++.h>
using namespace std;
int f[21][1001],n,line[30],k;
int main()
{
    cin>>n>>k;
    for(int i=1;i<=n;++i)
    {
        cin>>line[i];
        f[i][line[i]]=1;
    }
    for(int i=2;i<=n;i++)
    {
        for(int j=1;j<line[i];j++)f[i][j]+=f[i-1][j];
        for(int j=line[i];j<=k;++j)
        {
            f[i][j]+=(f[i-1][j]+f[i-1][j-line[i]]);
        }
    }
   cout<<f[n][k]<<endl;
    return 0;
}

背包问题求方案数。

0 0
原创粉丝点击