2 条题解
-
8
我又来水题解啦~
这道题灰墙的简单(为什么难度到9)
其实就是在作业的代码上加路径存储就OK啦 附上完整代码
#include <bits/stdc++.h> using namespace std; int f[10005], a[10005], n, m; vector<int> ans[2005];//向量ans int main() { cin >> n >> m; for (int i = 1; i <= n; i++) cin >> a[i]; memset(f,0x3f,sizeof(f));//一定要初始化! f[0] = 0; for (int i = 1; i <= n; i++) { for (int j = m; j >= a[i]; j--)//倒着判断 { if (f[j-a[i]] + 1 < f[j]) { f[j] = f[j-a[i]]+1; ans[j] = ans[j-a[i]];//记录路径 ans[j].push_back(i); } } } for (int i = 0;i < ans[m].size();i++)//输出 { cout << ans[m][i] << " "; } return 0;//华丽的结束 }
点个赞吧!
- 1
信息
- ID
- 382
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 5
- 标签
- (无)
- 递交数
- 496
- 已通过
- 198
- 上传者