【Ybtoj 第4章 例题1】拔河比赛【深搜】

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


解题思路

这是一个很简单的深搜。

依题意得每组最多 n 2 \frac{n}{2} 2n 个人,对于每个人无非有选和不选两种情况。
累计选的总和,用全部人的总和去减就得出了另一对的重量,取绝对值即可。


代码

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;

int t,n,a[50],lyx,ans;

void dfs(int dep,int x,int s){
    
    
	if(x==n/2)
	{
    
    
		ans=min(ans,abs(lyx-s*2));
		return;
	}
	if(dep>n)return;
	dfs(dep+1,x+1,s+a[dep]);
	dfs(dep+1,x,s);
}
int main(){
    
    
	scanf("%d",&t);
	while(t--)
	{
    
    
		ans=2147483600; 
		lyx=0;
		scanf("%d",&n);
		for(int i=1;i<=n;i++)
		{
    
    
			scanf("%d",&a[i]);
			lyx+=a[i];
		}
		dfs(1,0,0);
		printf("%d\n",ans);
	}
	
} 

猜你喜欢

转载自blog.csdn.net/kejin2019/article/details/112390544
今日推荐