这个伪代码是否假设基于零的索引?

时间:2010-08-16 18:07:06

标签: c++ pseudocode

如果这是数组中的第一个或第二个元素,我不确定它们是否写入1:

function DouglasPeucker(PointList[], epsilon)
 //Find the point with the maximum distance
 dmax = 0
 index = 0
 for i = 2 to (length(PointList) - 1)
  d = OrthogonalDistance(PointList[i], Line(PointList[1], PointList[end])) 
  if d > dmax
   index = i
   dmax = d
  end
 end

 //If max distance is greater than epsilon, recursively simplify
 if dmax >= epsilon
  //Recursive call
  recResults1[] = DouglasPeucker(PointList[1...index], epsilon)
  recResults2[] = DouglasPeucker(PointList[index...end], epsilon)

  // Build the result list
  ResultList[] = {recResults1[1...end-1] recResults2[1...end]}
 else
  ResultList[] = {PointList[1], PointList[end]}
 end

 //Return the result
 return ResultList[]
end

例如,我在c ++中实现这个,所以在i = 2的情况下,我应该为int i = 1做什么?

由于

2 个答案:

答案 0 :(得分:2)

猜测,看起来索引1是数组中的第一个元素(否则第一个元素永远不会被索引到任何地方)。尽管如此,最好的方法是尝试它:)

答案 1 :(得分:1)

它是1索引的。注意这一行:

recResults1[] = DouglasPeucker(PointList[1...index], epsilon)

以及:

ResultList[] = {recResults1[1...end-1] recResults2[1...end]}

从列表的开头进行访问。