我有不同尺寸的小矩形(1cm x 2xm,2cmx3cm,4cm*6cm等)。不同类型的矩形数量可能会因情况而异。每种不同的矩形可能具有不同数量的计数。
我需要创建一个大矩形,其中所有这些小矩形只能放在边缘上。不能旋转小矩形。最终的外部矩形应该理想地类似于正方形形状。X~Y。并非所有边缘都需要填满。较小的矩形之间可以有间隙。 图片示例:
http://i.stack.imgur.com/GqI5z.png 我正在尝试编写一段代码来找出可能形成的最小面积。
我有一个算法,通过所有可能的放置方式来找出可能的最小面积。但是,随着不同类型的矩形和矩形数量的增加,它需要很长时间才能运行。即2种矩形,每种矩形都有100个以上。8个循环。那将是~100^8次迭代。
有没有更好、更快的算法来计算可能的最小面积?代码是用Python编写的,但任何算法概念都可以。
我需要创建一个大矩形,其中所有这些小矩形只能放在边缘上。不能旋转小矩形。最终的外部矩形应该理想地类似于正方形形状。X~Y。并非所有边缘都需要填满。较小的矩形之间可以有间隙。 图片示例:
http://i.stack.imgur.com/GqI5z.png 我正在尝试编写一段代码来找出可能形成的最小面积。
我有一个算法,通过所有可能的放置方式来找出可能的最小面积。但是,随着不同类型的矩形和矩形数量的增加,它需要很长时间才能运行。即2种矩形,每种矩形都有100个以上。8个循环。那将是~100^8次迭代。
有没有更好、更快的算法来计算可能的最小面积?代码是用Python编写的,但任何算法概念都可以。
for rectange_1_top_count in (range(0,all_rectangles[1]["count"]+1)):
for rectange_1_bottom_count in range(0,all_rectangles[1]["count"]-rectange_1_top_count+1):
for rectange_1_left_count in (range(0,all_rectangles[1]["count"]-rectange_1_top_count-rectange_1_bottom_count+1)):
for rectange_1_right_count in ([all_rectangles[1]["count"]-rectange_1_top_count-rectange_1_bottom_count-rectange_1_left_count]):
for rectange_2_top_count in (range(0,all_rectangles[2]["count"]+1)):
for rectange_2_bottom_count in (range(0,all_rectangles[2]["count"]-rectange_2_top_count+1)):
for rectange_2_left_count in (range(0,all_rectangles[2]["count"]-rectange_2_bottom_count-rectange_2_top_count+1)):
for rectange_2_right_count in [(all_rectangles[2]["count"]-rectange_2_bottom_count-rectange_2_left_count-rectange_2_top_count)]:
area=calculate_minimum_area()
if area< minimum_area:
minimum_area=area