python - 如果矩形适合水平或垂直python,则递归枚举* m矩形中的所有坐标以检查所有坐标
问题描述
我应该如何检查冲突并通过所有可能的方式以返回最佳方式?
目标:返回最佳坐标解决方案,例如(0,0),(0,2)..
我们有一个例子(n * m)=(5 * 5):
- A 垂直:高度=a=3,宽度=b=2
- B 为横向:height=a=2, width=b=3
- 如果 A=(0,0) 表示:例如 (0,0) 直到 (0+height,O+width) 必须适合 n*m 并且不能被占用
- 坐标={'C': [(0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (1, 0), (1, 1), (1, 2), (1, 3), (1, 4), (2, 0), (2, 1), (2, 2), (2, 3), (2, 4), (3 , 0), (3, 1), (3, 2), (3, 3), (3, 4), (4, 0), (4, 1), (4, 2), (4, 3 ), (4, 4)]}
- 所以我想从(0,0)开始测试A或B是否递归通过并在最后返回最佳解决方案,我已经以树的形式尝试过它不起作用,因为我总是需要检查解决了知道下一个坐标是否适合的解决方案
dic= dict({"A": [], "B": []})
p={'C': [(0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (1, 0), (1, 1), (1, 2), (1, 3), (1, 4), (2, 0), (2, 1), (2, 2), (2, 3), (2, 4), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4), (4, 0), (4, 1), (4, 2), (4, 3), (4, 4)]}
def enumOptimal(p,dic,ii):
if A : dic['A'].append(A)
enumOptimal(next p,dic,ii)
if B : dic['B'].append(B)
enumOptimal(next p,dic,ii)
enum(next Point, dic)#in case neither A nor B fits
if ii >len(p): print dic
解决方案
推荐阅读
- c++ - C++:实例化没有命名空间的对象
- c# - 当您有 GUID (UniqueIdentifier) 列时,C# 中的 SQL 批量插入
- here-api - 在“发现/探索”入口点中使用“类别 ID”来缩小结果范围
- c# - 来自数据表和 IList 的嵌套 JSON
- r - 以高分辨率绘制多行代码
- oracle - 更新索引列 Oracle
- webpack - 如何防止库被 UglifyJs 或 Terser Webpack 插件破坏?
- gcloud - 如何使用 gcloud 命令行启用单词置信度
- r - 如何使用 Data.table 处理 date.time
- ffmpeg - 创建仅音频再现 - 8KHz 16-bit little endian uncompressed.wav