gpt4 book ai didi

java - 填充 nxm 网格的方法数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:24:43 26 4
gpt4 key购买 nike

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

给定一个 nxm 网格,编写一个递归算法来找出该网格可以被 3x1 和 1x3 block 填充的方式的数量。

我对 3 x M 网格的逻辑:

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

我不知道如何改变逻辑来解决上面的问题。

有人可以指点一下吗?谢谢。

最佳答案

position 为左上角,然后是网格的第一个未填充的槽(从左到右然后从上到下)。最多有两种方法可以将方 block 放置在位置。尝试在 position 放置一个 1x3 的水平 block ,然后在剩余的网格上调用递归函数。尝试在 position 处放置一个 3x1 的垂直 block ,然后对其调用递归函数。观察如果没有合法的方法来放置一个方 block (例如,在最后,假设只剩下一个 2x2 的方 block ),程序的这个分支就无法找到解决方案。那是因为网格必须由 3x1 block 填充。

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

这是方法签名的想法

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

关于java - 填充 nxm 网格的方法数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19760755/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com