比赛 hhh 评测结果 AAAAAAAAAA
题目名称 砝码称重 最终得分 100
用户昵称 梦那边的美好ET 运行时间 0.303 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2018-07-31 10:44:39
显示代码纯文本
#include<iostream>  
#include<cstdio>
#include<cmath>
#include<cstring>  
#include<algorithm>  
using namespace std; 
int n,m,a[20],ans,p,tot;
bool u[20],w[2001];
void hs(){
	memset(w,0,sizeof w);
	w[0]=1;
	for(int i=0;i<n;i++)
		if(!u[i])
			for(int j=tot-a[i];~j;j--)
				if(w[j])
					w[j+a[i]]=1;
	p=0;
	for(int i=1;i<=tot;i++)
		p+=w[i];
	ans=max(ans,p);
	return;
}
void dfs(int st,int dep){
	if(dep==m){
		hs();
		return;
	}
	for(int i=st;i<n;i++){
		u[i]=1;
		dfs(i+1,dep+1);
		u[i]=0;
	}
	return;
}
int main(){
	freopen("weight.in", "r", stdin);
	freopen("weight.out", "w", stdout);
	cin>>n>>m;
	for(int i=0;i<n;i++){
		cin>>a[i];
		tot+=a[i];
	}
	dfs(0, 0);
	cout<<ans;
	return 0;
}