拔河比賽 (20分)

拔河比賽

【問題描述】 熊出沒之探險日記,講述了夏季休林季,光頭強變身成爲一名導遊,並與熊大熊二一起, 幫助小女孩趙琳去往森林深處找尋兒時玩伴東北虎的故事。 某一天,他們準備進行拔河比賽,森林裏很多動物都想來報名參加。經過投票,他們最 終選出了光頭強,趙琳,熊大,熊二,吉吉,毛毛。由於不同動物和人的力量明顯是不一樣 的,所以這個拔河比賽可能會很不公平。於是他們想每 3 個分成一組,並對每位選手的力量 值做一個適當的估計,力量估計值都是一個正整數。 拔河比賽馬上就要開始了,請你根據給出的力量值來判斷是否可以分成兩組,每組 3 位選手,同時要求每組的力量值總和相等。

輸入格式:
第一行是一個正整數 T,表示共計有 T 組數據需要判定。接下對於每組數據, 都是 6 個正整數,表示每位選手的實力,每組數據佔一行。

輸出格式:
對於每組數據,如果可以分成實力相同的兩個隊伍,就輸出 yes,否則就輸出 no,每個 輸出佔一行。

輸入樣例1:
1
1 3 2 1 2 1

輸出樣例1:
yes

輸入樣例2
2
1 1 1 1 1 99
1 1 1 1 1 1

輸出樣例2:
no
yes

#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
int n,a[7],vis[7],flag=0,j;
void dfs(int k,int len,int sum,int ans){
	if(len==3){
		if(sum==ans)
		flag=1;
		return ;
	}
	else{
		for(int i=k;i<=6;i++){
			if(!vis[i]){
				vis[i]=1;
				dfs(k+1,len+1,sum+a[i],ans-a[i]);
				vis[i]=0;
			}
		}
	}
	
	
}
int main ()
{
	scanf("%d",&n);
	while(n--){
		int ans=0;
		flag=0;
		memset(vis,0,sizeof(vis));
		memset(a,0,sizeof(a));
		for(int i=1;i<=6;i++){
		scanf("%d",&a[i]);
		ans+=a[i];
	}
	 dfs(1,0,0,ans);
	 if(flag)
	 printf("yes\n");
	 else
	 printf("no\n");
	}
	return 0;
 } 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章