我有一个大小为n
的整数值数组和一个给定的数字S
。
1<=n<=30
我想找到总数为S
的 子序列,使得每个子序列元素之和小于S
。例如:假设n=3
,S=5
,数组元素为{1,2,3}
,则其子序列总数为7
,如下所示-
{1},{2},{3},{1,2},{1,3},{2,3},{1,2,3}
但是,所需的子序列是:
{1},{2},{3},{1,2},{1,3},{2,3}
这里有一个序列 {1,2,3}
,因为它的元素和 (1+2+3)=6
大于给定的值 S
,所以不会被计算。其他子序列的元素和都小于给定的值 S
,所以总共有 6
种可能的子序列。
我已经尝试了递归方法,但是它的时间复杂度是 2^n
。请帮助我们用多项式时间解决问题。