首先,先看一道例题 BJFUOJ 1042/ZOJ 1909 拼正方形。
下面是题目连接,欢迎AC:
http://acm.bjfu.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1042。
描述
给你一些木棍,让你用这些木棍在地上摆出一个正方形的轮廓。如果能摆成,输出"yes",否则输出"no"。
输入
第一行有一个正整数t表示数据组数
每组数据占一行,一行中第一个数n(4<=n<=20)表示木棍的根数,接下来的n个数字表示每个木棍的长度。
输出
如果能摆成正方形,输出"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
这道题明显可以看出应该用DFS进行解决,至于深度优先算法的原理,我早已烂熟于心。但是,这个题依然恶心了我好长一段时间,所以我为了避免以后再次出现这种现象,决定对DFS的代码策略进行总结。