“假设你想用一排 4×1 和 6×1 的乐高积木拼成一个实心面板。为了结构强度,积木之间的空间绝不能在相邻的行中排列。例如,所示的 18×3 面板下面是不可接受的,因为前两行块之间的空间对齐。
构建 10×1 面板有 2 种方式,构建 10×2 面板有 2 种方式,构建 18×3 面板有 8 种方式,构建 36×5 面板有 7958 种方式。
构建 64×10 面板有多少种不同的方法?答案将适合 64 位有符号整数。编写程序计算答案。你的程序应该运行得非常快——当然,它不应该超过一分钟,即使在旧机器上也是如此。让我们知道您的程序计算的值,您的程序计算该值所用的时间,以及您在哪种机器上运行它。包括程序的源代码作为附件。"
我最近收到了一个编程难题,并且一直在绞尽脑汁试图解决它。我使用 c++ 编写了一些代码,我知道这个数字很大......我的程序运行了几个小时,然后我决定停止它,因为即使在慢速计算机上也需要 1 分钟的运行时间。有没有人见过类似的谜题?已经有几个星期了,我不能再提交了,但这真的让我很烦恼,我无法正确解决它。关于使用算法的任何建议?或者也许可能的解决方法是“开箱即用”。我采用的是制作一个程序,该程序构建每个可能的 4x1 和 6x1 块“层”以制作 64x1 层。结果证明有大约 3300 个不同的层。然后我让我的程序运行并将它们堆叠到所有可能的 10 层高墙上,这些墙没有排列的裂缝……正如你所看到的,这个解决方案需要很长时间。所以很明显,蛮力似乎并不能在时间限制内有效地解决这个问题。任何建议/见解将不胜感激。