luogu_1441 砝码称重

Posted codetogether

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu_1441 砝码称重相关的知识,希望对你有一定的参考价值。

#include <bits/stdc++.h>
using namespace std;
int n,m,a[30],ans;
bool use[30],t[2010];

void dfs(int now,int cnt){
	if(now==m){
		memset(t,0,sizeof(t));
		int sum=0,tot=0; t[0]=1;
		for(int i=1;i<=n;i++)if(!use[i]){
			for(int j=tot;j>=0;j--)if(t[j] && !t[j+a[i]])t[j+a[i]]=1,sum++;
			tot+=a[i];
		}
		ans=max(ans,sum);
		return;
	}
	for(int i=cnt+1;i<=n;i++)if(!use[i]){
		use[i]=1;
		dfs(now+1,i);
		use[i]=0;
	}
}

int main(){
	scanf("%d%d",&n,&m);
	for(int i=1;i<=n;i++)scanf("%d",&a[i]);
	dfs(0,0);
	printf("%d
",ans);
	return 0;
}

  

以上是关于luogu_1441 砝码称重的主要内容,如果未能解决你的问题,请参考以下文章

luogu P1441状压DP砝码称重

luogu P1441状压DP砝码称重

luogu P1441状压DP砝码称重

luogu1441 砝码称重

P1441 砝码称重

砝码称重 洛谷 1441