获取表条目的算法?

时间:2013-01-16 06:32:32

标签: arrays algorithm multiple-entries

说我有这个非负面条目表:

    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

下式给出:

  1. 列数C和行数R
  2. 两个总和条目(每行的总和和每列的总和)
  3. 和总数(本例中为66)
  4. 目标是生成表的条目(内部单元格;不是相同的条目。但是,总和必须等于每行和每列的给定单元格) 所有条目必须是正值。

    任何伪代码都可以吗?

3 个答案:

答案 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 + .. =总和

对于每一行和每一列。 并解决了使用求解线性方程组的标准方法。