标签:acm uva brute force backtracking
题目如下:
How Big Is It? |
0.543
.
3 3 2.0 1.0 2.0 4 2.0 2.0 2.0 2.0 3 2.0 1.0 4.0
9.657 16.000 12.657
求能放置所给圆的矩形的最小长度。这道题有一些细节没注意到的话就会无限WA,刚开始我想的是把所有圆全排列,把每个情况的长度算出来求最小值,结果WA了,因为算每个情况长度的时候,我是假设每个圆都与前一个圆相切,实际并不一定这样,比如有两个很大的圆相切,他们中间可以有许多小圆,与这两个圆并不一定相切,所以用之前的方法算出来结果就小了。在网上参考了别人的代码,发现他们是设置了一个数组记录圆心坐标,求每个圆心坐标的时候,是求出与之前圆相切的圆的圆心坐标的最大值,因为目前考虑的圆肯定是最右的圆,所以它的圆心坐标肯定最大,又由于要矩形长度最短,所以至少与之前的某一个圆相切(不一定是前一个)。最左边的坐标就是圆心坐标减去半径大小的最小值,最右边的坐标就是圆心坐标加上半径大小的最大值,最右边减去最左边的值的最小值就是矩形的最小长度。
AC的代码如下:
UVA How Big Is It?,布布扣,bubuko.com
标签:acm uva brute force backtracking
原文地址:http://blog.csdn.net/u013840081/article/details/37830765