说我有这个非负面条目表:
1 2 3 sum
1 4 5 1 10
2 6 12 7 25
3 0 3 14 17
4 7 2 5 14
sum 17 22 27 66
下式给出:
目标是生成表的条目(内部单元格;不是相同的条目。但是,总和必须等于每行和每列的给定单元格) 所有条目必须是正值。
任何伪代码都可以吗?
答案 0 :(得分:3)
以您喜欢的任何顺序遍历表格单元格。在每个步骤中,将两个总和约束仍允许的最大数字放在那里。
例如,如果我们逐行:
10 0 0
7 18 0
0 4 13
0 0 14
答案 1 :(得分:2)
试试我的伪代码。此规则的名称类似于“西北角的规则”(我无法在维基上找到此规则的真实姓名)
row = 1
col = 1
while (col <= C && row <= R)
Matrix[col, row] = Min(colsum[col], rowsum[row])
colsum[col] = colsum[col] - Matrix[col, row]
rowsum[row] = rowsum[row] - Matrix[col, row]
while (col <= C && colsum[col] == 0) col++
while (row <= R && rowsum[row] == 0) row++
Print Matrix;
答案 2 :(得分:1)
创建一组线性方程式; X + Y + .. =总和
对于每一行和每一列。 并解决了使用求解线性方程组的标准方法。