ZOJ1909-Square
来源:互联网 发布:mac java api文档下载 编辑:程序博客网 时间:2024/06/04 00:42
Given a set of sticks of various lengths, is it possible to join them end-to-end to form a square?
Input
The first line of input contains N, the number of test cases. Each test case begins with an integer 4 <= M <= 20, the number of sticks. M integers follow; each gives the length of a stick - an integer between 1 and 10,000.
Output
For each case, output a line containing "yes" if is is possible to form a square; otherwise output "no".
Sample Input
3
4 1 1 1 1
5 10 20 30 40 50
8 1 7 2 6 4 4 3 5
Sample Output
yes
no
yes
#include <stdio.h>#include <string.h>#include <algorithm>using namespace std;int a[250],vis[205],sum,l,n;int dfs(int x,int pos,int len){ if(x == 3) return 1; int j; for(j = pos; j>=0; j--) { if(!vis[j]) { vis[j] = 1; if(len+a[j]<l) { if(dfs(x,j-1,len+a[j])) return 1; } else if(len+a[j]==l) { if(dfs(x+1,n-1,0)) return 1; } vis[j] = 0; } } return 0;}int main(){ int t,i; scanf("%d",&t); while(t--) { sum = 0; scanf("%d",&n); for(i = 0; i<n; sum+=a[i],i++) scanf("%d",&a[i]); l = sum/4; memset(vis,0,sizeof(vis)); sort(a,a+n); if(l*4!=sum || n<4 || l<a[n-1]) { printf("no\n"); continue; } if(dfs(0,n-1,0)) printf("yes\n"); else printf("no\n"); } return 0;}
0 0
- zoj1909 Square
- ZOJ1909-Square
- HDU1518 & POJ2362 & ZOJ1909 Square
- hdu1518 Square | ZOJ1909 | POJ2362 (dfs + 剪枝)
- zoj1909
- ZOJ1909 POJ2362 HDU1518 Square,很经典的DFS+剪枝!
- zoj1909 Square dfs+优化(参考别人的)
- HDU1518 & POJ2362 & ZOJ1909 Square(DFS,剪枝是关键呀)
- Square
- Square
- Square
- Square
- Square
- Square
- Square
- Square
- Square
- A Square Perfect Square
- 剑指offer:二叉搜索树的第k个结点
- 有实力的人才能谈梦想
- Android基础 | 控件基础 | Listview之BaseAdapter②
- IF标志位与中断的关系
- Spring+SpringMVC+MyBaties问题总结(三)
- ZOJ1909-Square
- WindowManager
- iOS面试题合集(77道)【有答案】
- IE8下的JavaScript兼容问题
- java 排序基础
- Android 菊花progress
- 深入浅出 - Android系统移植与平台开发(六)- 搭建基于Linux的Android开发环境
- c++作业5
- 物联网是大数据的一个重要应用