别看了
2025-01-17 19:06:06
发布于:湖南
49阅读
0回复
0点赞
题目是错题,理论上无解,所有题解都可以被卡到 .
如果没有要求必须找到第一组解,一个可行的代码如下:
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
vector <int> dp[10005];
int a[10005];
int main(){
int n, m;
cin >> n >> m;
for(int i = 0; i <= m; i++){
dp[i].push_back(0);
}
for(int i = 1; i <= n; i++){
cin >> a[i];
for(int j = m; j >= a[i]; j--){
if(dp[j][0] < dp[j - a[i]][0] + a[i]){
dp[j] = dp[j - a[i]];
dp[j][0] += a[i];
dp[j].push_back(a[i]);
}
}
}
if(dp[m][0]) for(int i = 1; i < dp[m].size(); i++) cout << dp[m][i] << ' ';
else cout << "No Answer!";
return 0;
}
这里空空如也
有帮助,赞一个