购物网站开发jdk,徐州做网站xlec,百度网盟有哪些网站,潍坊网站建设公司电话P2383 狗哥玩木棒 约翰玩木棒
题目背景 狗哥又趁着语文课干些无聊的事了…
题目描述 现给出一些木棒长度#xff0c;那么狗哥能否用给出的木棒#xff08;木棒全用完#xff09;组成一个正方形呢#xff1f;
输入格式#xff1a;
输入文件中的第一行是一个整数n表示测…P2383 狗哥玩木棒 约翰玩木棒
题目背景 狗哥又趁着语文课干些无聊的事了…
题目描述 现给出一些木棒长度那么狗哥能否用给出的木棒木棒全用完组成一个正方形呢
输入格式
输入文件中的第一行是一个整数n表示测试的组数接下来n行表示每组的测试数据。 每行的第一个数为m(4m20),接下来m个数ai(1ai1000)表示木棒的长度。
输出格式
对于每组测试数据如果可以组成正方形输出“yes”否则输出“no”。
输入输出样例 输入样例 3 4 1 1 1 1 5 10 20 30 40 50 8 1 7 2 6 4 4 3 5 输出样例 yes no yes
//【参考代码】
#include iostream
#include bits/stdc.h
using namespace std;
const int N 1000;
int n, m;
int s[N];
int eval;//边长 平均数
int flag;//是否能组成正方形bool cmp(int a, int b)
{return ab;
}void dfs(int k, int a, int b, int c, int d)
{if(aeval||beval||ceval||deval){return;//其中一条边大于平均数 长木棒不能变短}if(aevalbevalcevaldeval){flag 1;//刚好正方形}if(flag1) return;dfs(k1,as[k],b,c,d);dfs(k1,a,bs[k],c,d);dfs(k1,a,b,cs[k],d);dfs(k1,a,b,c,ds[k]);
}int main()
{scanf(%d,n);while(n--){int all 0;//求所有的木头之和memset(s,0,sizeof(s));scanf(%d,m);for(int i1; im; i){scanf(%d,s[i]);alls[i];}//正方形的4条边是相等的 不整除4不可能是正方形if(all%4!0){puts(No);continue;}eval all/4;//正方形的每一条边sort(s1,sm1,cmp);//从大到小进行排序dfs(1,0,0,0,0);if(flag1) puts(yes);else puts(no);}return 0;
}