博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
YbtOJ——深度搜索【例题1】拔河比赛
阅读量:2154 次
发布时间:2019-04-30

本文共 712 字,大约阅读时间需要 2 分钟。

A. 【例题1】拔河比赛

题目

在这里插入图片描述

题解

由于本题数据过水,用爆搜即可过掉。

只考虑一个队伍,搜索每个人加不加进这个队伍里,若不加其实就是加进另一个队。
若当前加的人数未达半数,即可加进去;
若当前没加的人数未达半数,即可不加进去

代码

#include
#include
using namespace std;int t,n,m,ans,a[100];void dfs(int dep,int c1,int c2,int sum,int n)//c1记录一队人数,c2记录未加进一队的人数(二队人数),sum记录一队重量{
if(dep>n) {
int sum2=m-sum;//另一队重量 ans=min(ans,abs(sum-sum2));//统计最小差值 } else {
if(c1<(n+1)/2) dfs(dep+1,c1+1,c2,sum+a[dep],n); //当前加的人数未达半数,即可加进去 if(c2<(n+1)/2) dfs(dep+1,c1,c2+1,sum,n); //当前没加的人数未达半数,即可不加进去 }}int main(){
cin>>t; for(int i=1; i<=t; i++) {
cin>>n; m=0; for(int j=1; j<=n; j++) {
cin>>a[j]; m+=a[j];//统计总重量 } ans=0x7f7f7f7f;//ans统计最小答案,要初始化最大值 dfs(1,0,0,0,n); cout<
<

转载地址:http://qhpwb.baihongyu.com/

你可能感兴趣的文章