Square
Time Limit:1s | Memory limit:32M |
Accepted Submit:184 | Total Submit:885 |
Given a set of sticks of various lengths, is it possible to join them end-to-end to form a square?
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.
For each case, output a line containing "yes" if is is possible to form a square; otherwise output "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 |
解题:
一道深度优先搜索(比较不会的东西)。问题是给定几根固定长度的木棍,问是否能组合成正方形,正方形的长度即是总长度。先将木棍从大到小排序,最大的木棍不能大于总长度的4/1,即是正方形的边长。扫描木棍,查找能组合成正方形的木棍。
参考资料:http://www.cnblogs.com/rocketfan/archive/2009/05/20/1467236.html
http://www.cppblog.com/jhpjhyx/archive/2009/05/14/82981.html