洛谷——P2383 狗哥玩木棒

https://www.luogu.org/problem/show?pid=2383

题目背景

狗哥又趁着语文课干些无聊的事了...

题目描述

现给出一些木棒长度,那么狗哥能否用给出的木棒(木棒全用完)组成一个正方形呢?

输入输出格式

输入格式:

 

输入文件中的第一行是一个整数n表示测试的组数,接下来n行表示每组的测试数据。 每行的第一个数为m(4<=m<=20),接下来m个数ai(1<=ai<=1000)表示木棒的长度。

 

输出格式:

 

对于每组测试数据,如果可以组成正方形输出“yes”,否则输出“no”。

 

输入输出样例

输入样例#1:
3
4 1 1 1 1 
5 10 20 30 40 50 
8 1 7 2 6 4 4 3 5
输出样例#1:
yes
no
yes

说明

狗哥快抓狂了

 

DFS入门中。。

 1 #include <cstdio>
 2 
 3 int n,a[26],tot;
 4 int lenedge[5];
 5 bool flag;
 6 
 7 void DFS(int now)
 8 {
 9     if(flag) return ;
10     if(now==n+1)
11     {
12         flag=1;
13         return ;
14     }
15     for(int i=1;i<5;i++)
16     {
17         if(lenedge[i]>=a[now])
18         {
19             lenedge[i]-=a[now];
20             DFS(now+1);
21             lenedge[i]+=a[now];
22         }
23     }
24 }
25 
26 int AC()
27 {
28     int t; scanf("%d",&t);
29     for(;t--;tot=0,flag=0)
30     {
31         scanf("%d",&n);
32         for(int i=1;i<=n;i++)
33             scanf("%d",a+i),tot+=a[i];
34         if(tot%4)
35         {
36             puts("no");
37             continue;
38         }
39         for(int i=1;i<5;i++)
40             lenedge[i]=tot/4;
41         DFS(1);
42         if(flag) puts("yes");
43         else puts("no");
44     }
45     return 0;
46 }
47 
48 int Hope=AC();
49 int main(){;}

 

posted @ 2017-09-03 09:57  Aptal丶  阅读(463)  评论(0编辑  收藏  举报