跪得不要不要的,最近就跟DFS+回溯干上了。
嗯这道题就是1011的简化版,但是为什么我的程序跑的比1011慢Orz。
题目概述:
题目是给定一组数,这些数作为你的输入数据,你要进行判断这些数字能不能组成正方形,能的话输出yes,不能的话输出no。
算法思想:
心累,自己第一次交是110MS,然后从网上找各种各样的优化方法结果最少只到了47MS,真是要膜拜一下那些0MS的呃呃呃呃。
就是经典的DFS+回溯模板。这里有一个优化方法我在1011的时候没有想到,就是在传参数的时候记录下本次dfs开始的时候所在的木棒位置,如果连这个木棒都回溯了那么则是一定不可以构成正方形(因为循环遍历,必须要求起点不被回溯)。
代码大概的顺序就是:
1.读数据,算和。
2.4不能整除和就返回no,能整除则变成就为和除以4。
3.排序以后如果第一个数大于边长则一定不能组成。
4.开始dfs,u为当前