社区讨论
80分WA#8#9代码求条必关
P1441砝码称重参与者 3已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @mks3koi7
- 此快照首次捕获于
- 2026/01/24 17:18 4 周前
- 此快照最后确认于
- 2026/02/11 02:30 上周
CPP
#include <bits/stdc++.h>
using namespace std;
int n, m, a[25], vis[25], f[2005], ans, tot, maxn;
void dfs(int step, int num){
if(num > m) return;
if(step == n){
if(num == m){
memset(f, 0, sizeof f);
f[0] = 1;
ans = 0;
tot = 0;
for(int i=1;i<=n;i++)
if(!vis[i]){
for(int j=tot;j>=0;j--)
if(f[j] && !f[j + a[i]]){
f[j + a[i]] = 1;
ans++;
}
tot += a[i];
}
maxn = max(maxn, ans);
}
return;
}
dfs(step + 1, num);
vis[step] = 1;
dfs(step + 1, num + 1);
vis[step] = 0;
}
int main(){
cin >> n >> m;
for(int i=1;i<=n;i++)
cin >> a[i];
dfs(1,0);
cout << maxn;
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...