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(){;}
时间: 2024-10-10 02:24:06