我有以下情况:
在这里我的问题是:我如何计算我必须有多少可能的选项:
计算元素的行/列间距(高度/宽度):对于6的区域,不同的选项可以是例如6x1,1x6,3x2和2x3。必要条件是元素需要是正方形或矩形,所以fe不是U或T形占据细胞中的网格。这是我挣扎的地方! 我应该像案件一样做案件吗?我想有更有效的方法可以做到这一点!这将是条件?
将这些元素放在区域内
我正在编写java和javafx。
到目前为止,我尝试了以下方法来计算跨度/高度/宽度:
int NumberRow = 6;
int NumberColum = 6;
int columspan;
int rowspan;
int area = 6;
if (area / NumberRow == 1) {
columspan = 1;
rowspan = area;}
if (area/NumberColum== 1) {
columspan = area;
rowspan = 1;
}
// if area modulo NumberColum or NumberRow == 0 it's an multiple..
if (area % NumberColum == 0 ) {
???? --> what would make sense here ?
}
VBox v = new VBox();
v.getChildren().addAll(h1, t, image);
grid.add(v, colum, row, columspan, rowspan);
答案 0 :(得分:2)
元素数组可以按尺寸递减排序。
由于必须填充整个区域,因此可以从上到下,从左到右填充。
对于每个区域元素,必须迭代可能的形式;对于6:(1,6),(6,1),(2,3),(3,2):找到因子对。
带有反向跟踪的递归;递归看起来像:
if (free space == 0)
print success with placements
++solution count
return;
for every candidate:
if (candidate fits here)
place candidate here
recurse (candidates without candidate)
remove candidate here
我不会破坏你面前的美好困惑。