如何解决Kakuro的另一个版本

时间:2015-12-15 12:27:39

标签: c++ algorithm

问题是,在(h + 1)*(w + 1)的表格中,第一行包含w值:a [1] ... a [w]填写第2行...( w + 1)列。第一列包含h值:b [1] ... b [h]填充第2行...(第h + 1)行。 sum(a [i])等于sum(b [i])。

问题是给出一个可能的解决方案:结果,使得某个K的和(result [i] [K])等于a [i] with result [i] [K]!= result [ j] [K](i!= j且0< i< h + 1)。行的规则相同。 PS:所有整数都是正数。

例如:

a[] = {10, 3, 3}, b[] = {9, 7}

 //   10  3  3

 // 9  6  2  1

 // 7  4  1  2

result = {6, 2, 1;
          4, 1, 2}

就像Kakuro但不一样。我无法弄清楚应用哪种算法,如果有人知道如何解决它,请给我一些帮助。非常感谢。

1 个答案:

答案 0 :(得分:1)

您总是可以通过回溯来解决您的问题。这里的基本思路:从上到下,从左到右在部分填充的表中尝试一个有效值,当这个值没有导致解决方案时回溯。

带有注释C++的{​​{1}}中的最小示例:

solve