设计一种计算数组A n x n中1的数量的算法

时间:2014-01-15 17:25:13

标签: algorithm

假设nxn数组A的每一行由1和0组成,使得在A的任何行i中,所有1都在该行中的任何0之前。进一步假设第i行中的1的数量为至少行i + 1中的数字,对于i = 0,1,2,....,n-2 假设A已经在内存中,请描述在O(n)时间运行的方法,用于计算数组A中1的数量。

所以我的方法是从A [n-1,0]开始,如果== 1我们加上1的其他数字我们上升和右边 所以我们扫描A只向右和向上移动

1 个答案:

答案 0 :(得分:0)

双回路:

SUM = 0
j = 0
for i from n-1 to 0 step -1 do {
  while (j<n)and(A[i,j]==1) do {
    j = j+1
  }
  SUM = SUM+j
}

单环:

SUM = 0
i = n-1
j = 0
while (i>=0)and(j<n) do {
  if A[i,j]==1 then {
    j = j+1
  } else {
    SUM = SUM+j
    i = i-1
  }
}