-->
当前位置:首页 > 题库 > 正文内容

程序填空题:求解数字和为sum的方法数问题(动态规划)

Luz4年前 (2021-05-10)题库1140
求解数字和为sum的方法数问题。给定一个有n个正整数的数组a和一个整数sum,求选择数组a中部分数字和为sum的方案数。若两种选取方案有一个数字的下标不一样,则认为是不同的方案。

```c++
#include
#include
#include
#include
#define MAXN 1001
#define MAXS 1001

using namespace std;
int a[MAXN];
long long dp[MAXN][MAXS];
int n,sum;
long long solve();

int main()
{
cin>>n>>sum;
for(int i=1;i<=n;i++)
cin>>a[i];
cout< return 0;
}

long long solve()
{ int i,j;
for(i=0;i =1;
for(j=1;j =0;
for (i=1;i<=n;i++)
for(j=0;j<=sum;j++)
{
if (a[i]<=j)
dp[i][j]=;
else
dp[i][j]=;
}
return ;
}
```
### 输入格式:

第1行为两个正整数n(1≤n≤1000),sum(1≤sum≤1000),第2行为n个正整数a[i](32位整数),以空格隔开。

```in
5 15
5 5 10 2 3
```

### 输出格式:
输出方案数。

```out
4
```





答案:
第1空:dp[i][0]

第2空:dp[0][j]

第3空:dp[i-1][j-a[i]]+dp[i-1][j]

第4空:dp[i-1][j]

第5空:dp[n][sum]

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。