以下是我要解决的问题: http://www.hpcodewars.org/past/cw16/problems/2013ProblemSetFinalPost.pdf 转到第20号问题。它被称为Waffle Stacking。
你有一个5x5的方格。在网格的每个方格上,您可以构建一堆 华夫饼,其高度从1到5不等。网格的边缘是一些 数字线索。你的任务是在每个广场上建立一堆华夫饼干 方式:
•每行包含华夫饼干堆叠的每个可能高度 •每列包含华夫饼干堆叠的每个可能高度 •每个数字线索描述了可以的华夫饼干堆叠的数量 假设您从该方向查看行或列时看到了 较短的华夫饼干堆放在较高的华夫饼堆后面。例如,a 标有“5”的线索表示五个华夫饼堆必须出现增加 订单(否则你将无法看到所有五个华夫饼干 堆栈),而标记为“1”的线索表示最高的华夫饼堆(标记为5的那个)必须 先来。输入:
输出:
第一行输入显示每列顶部的线索。接下来的5行输入显示了每行图表左侧和右侧的线索。最后一行输入显示了每列底部的线索
2 2 3 2 1
4 1
1 4
3 2
2 2
3 2
3 2 1 3 4
你的程序应该打印5x5网格,每个方块之间有一个空格1 3 2 4 5
5 2 4 3 1
2 1 3 5 4
4 5 1 2 3
3 4 5 1 2
我首先说,如果有1,那么5必须紧挨着它,所以我立即将5放在解决方案网格中。在那之后,我被困住了!我曾经尝试过蛮力,但在竞赛环境中实践需要很长时间。
这个问题有可行的解决办法吗?
由于