社区讨论

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 条回复,欢迎继续交流。

正在加载回复...