nk 1207 &&poj 1011
2011-08-07 14:40
323 查看
题目链接:http://acm.nankai.edu.cn/p1207.html
题目大意:给你n个数判断利用所给的数字长度是否可以组成正方形,对于一般不成立的数据可以根据长度之和是否为四的倍数,但满足这条件的也不一定是正方形,要进行四条边的判定,即dfs搜索每条边,只有四条边同时成立时才能说明成立,这里需要进行优化,由于和poj 1011相同故这里不再说明,见下文 。
View Code
题目大意:给你n个数判断利用所给的数字长度是否可以组成正方形,对于一般不成立的数据可以根据长度之和是否为四的倍数,但满足这条件的也不一定是正方形,要进行四条边的判定,即dfs搜索每条边,只有四条边同时成立时才能说明成立,这里需要进行优化,由于和poj 1011相同故这里不再说明,见下文 。
View Code
#include<cstdio> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> using namespace std; const int maxn=70; int n,sum,ma,aim,num,a[maxn]; bool used[maxn]; int cmp(int x,int y) { if(x>y)return 1; else return 0; } bool dfs(int Stick,int len,int pos) { int i; bool sign=(len==0?true:false); if(Stick==num) return true; for(i=pos+1;i<n;i++) { if(used[i]) continue; if(len+a[i]==aim) { used[i]=true; if(dfs(Stick+1,0,-1)) return true; used[i]=false; return false; } else if(len+a[i]<aim) { used[i]=true; if(dfs(Stick,len+a[i],i)) return true; used[i]=false; if(sign) return false; while(a[i]==a[i+1]) i++; } } return false; } int main() { while(scanf("%d",&n)==1) { if(n==0) break; ma=sum=0; for(int i=0;i<n;i++) { scanf("%d",&a[i]); sum+=a[i]; if(a[i]>ma) ma=a[i]; } sort(a,a+n,cmp); for(aim=ma;aim<=sum;aim++) if(sum%aim==0) { num=sum/aim; memset(used,false,sizeof(used)); if(dfs(1,0,-1)) { printf("%d\n",aim); break; } } } return 0; }
相关文章推荐
- POJ 1207 && HDU 1032 The 3n + 1 problem(水~)
- HDU1455&&POJ1011-Sticksa
- ACM: 一题DFS(深搜,剪枝) poj 1011
- HDU_1455 && POJ_1011 Sticks (dfs)
- POJ 1011 递归 &amp; 回溯
- hdu1455 && poj1011 Sticks(深度优先搜索 DFS 经典剪枝 详解)
- POJ 2362 && POJ 1011【深搜】
- POJ 1207(The 3n + 1 problem)水题
- POJ 2362 square &&POJ 1011 Sticks 记忆化搜索 DFS
- POJ-2231 &AOJ-231 Moo Volume
- POJ-3087 Shuffle'm Up 解题报告
- zoj 2008 && poj 1511 Invitation Cards
- POJ--Kaka's Matrix Travels(最大费用最大流 && 经典建图 && 好题)
- 【暴力搜索】[POJ 1011]Sticks
- POJ 1011 Sticks
- 【北大夏令营笔记-深度优先搜索】POJ1011-Sticks
- POJ 2149 & ZOJ 2267&UVA 1337&UVALive 3192 Inherit the Spheres
- ZOJ 1133 Smith Numbers && POJ 1142 Smith Numbers
- poj_1195Mobile phones&&poj_2155Matrix
- POJ1029 & POJ1013 - 找哪个是假硬币...思维