繁体   English   中英

填充nxm网格的方法数量

[英]Number of ways to fill a nxm grid

我在编程书中遇到以下无法解决的问题:

给定一个nxm网格,编写一个递归算法以查找3x1和1x3块填充该网格的方式。

我的3 x M网格逻辑:

查找可用于填充网格的边M的块组合的数量。

我不知道如何更改逻辑来解决上述问题。

有人可以请教吗? 谢谢。

position为左上角,然后为网格的第一个未填充插槽(从左到右,然后从上到下)。 最多有两种方法可以将块放置在postion 尝试将1x3水平块放置在position ,然后在其余网格上调用递归函数。 尝试将3x1垂直块放置在position ,然后在该position调用递归函数。 请注意,如果没有合法的方式放置块(例如,最后说仅剩2x2的正方形),则该程序的该分支无法找到解决方案。 那是因为网格必须由3x1块填充。

您的逻辑不是递归的,而是一种组合方法,试图计算在内。 但是只要网格不是很大,计算机就有足够的内存来实际尝试所有组合。 如果您可以将此方法与书中递归解决的其他问题联系在一起,那将会很好。

这是方法签名的想法

int blockFillings(boolean[][] grid, int posx, int posy)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM