YbtOJ 深度搜索課堂過關 例1 拔河比賽【深度優先搜尋】
阿新 • • 發佈:2021-01-03
思路
這道題是一道比較基礎的深搜題
對於每一個隊員,只有選1隊和選2隊兩種狀態。
搜尋每一種情況取最小即可。
C o d e Code Code
#include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
int w[100010];
int T,n,ans=2147483647;
void dfs(int x,int g1,int g2,int js1,int js2)
{
if(x>n)
{
if (abs(g1-g2)<=1)
{
if(ans>abs(js1-js2))
ans=abs(js1-js2);
}
return;
}
dfs(x+1,g1+1,g2,js1+w[x],js2);
dfs(x+1,g1,g2+1,js1,js2+w[x]);
}
int main()
{
cin>>T;
while(T--)
{
cin>>n;
for(int i=1; i<=n; i++)
scanf("%d",&w[i]);
dfs (1,0,0,0,0);
cout<<ans<<endl;
ans=2147483647;
}
return 0;
}