题意:给出N个数据,求是否能组成正方形。
思路:dfs+剪枝。
剪枝思路:
1,数的总和能否被4整除;
2,最大边是否超过平均数;
3,如果某个数作为边的第一个数(在数已经降序排列的情况下),不能满足,则返回上一层。因为它做为第一个数走不下去,那么在后面的其他边也会有同样的情况(即又会出现在第一数的位置),因为每次循环要么从0开始,要么从star开始。在略过这根之后,想要完整拼完这个正方形,意味着要从0开始,这时候,它又会出现在第一个数的位置;
4,如果某个数作为边的最后一个数,不能满足,同样返回上一层。因为它作为最后一个数走不下去,你用其他小于它的数来代替。那么,如果要拼成一个正方形,且用完所有数,那么它在后面也必然会用上。这样就可以把它和前面代替它的那些数调换。-------->矛盾;
5,如果a[1]==a[2],a[1]已证明不行,a[2]也不用去试了;
6,对star的标记。感觉这个非常重要。可以跳过很多不必的探查!
分享到:
相关推荐
北大POJ2362-Square 解题报告+AC代码
poj 2488——dfs深度优先遍历 //给行数列数,求问能否遍历,给出字典序的一种遍历
poj 2362 Square.md
c表示有多少种珍珠 ai 表示第i种珍珠所需的数量 pi 表示第i种珍珠的价钱 每买一种珍珠都需要付额外的10 * pi的钱,便宜的珍珠可以用贵的珍珠来代替,求最少的钱的总数。
POJ 是“北京大学程序在线评测系统”(Peking University Online Judge)的缩写,是个提供编程题目的网站,兼容Pascal、C、C++、Java、Fortran、Python等多种语言。可以按照分类,在POJ上做题。
POJ 1006 源代码——中国剩余定理分析POJ 1006 源代码——中国剩余定理分析POJ 1006 源代码——中国剩余定理分析
POj 1001源代码——高精度乘单精度POj 1001源代码——高精度乘单精度POj 1001源代码——高精度乘单精度POj 1001源代码——高精度乘单精度
poj 1084 Square Destroyer 的AC代码 深度优先搜索 + 启发 未用跳舞链
The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public highways. So the traffic is difficult in Flatopia. The Flatopian government is aware of this problem....
POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类POJ分类
poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题报告poj 解题...
晒代码之二——多重背包(POJ1276)
这题是道神题,神就神在,它既能让你搞懂网络流及其优化,还给了你很大的优化空间。
北京大学数据结构与算法课程作业代码,供广大学习c++的同学参考与学习
北京大学数据结构与算法课程作业代码,供广大学习c++的同学参考与学习
数据结构中的各算法,初级,中级,高级。如集合,图的规划,数据等
POJ第1861题源码 POJ第1861题源码 POJ第1861题源码
北大POJ1159-Palindrome 解题报告+AC代码
C语言 poj npu 西工大 C语言Poj答案全完整打包,给有需要的朋友
poj 3414解题报告poj 3414解题报告poj 3414解题报告poj 3414解题报告