飛行経路を表す一連の座標が与えられた場合、最大距離を見つけることができます(通過するポイント数はnです)。この問題を説明するために、次のように2Dグリッドに飛行経路が表示されます。座標のセットが与えられた場合、最大距離を見つける(ステップを使用)
ここでは、アルゴリズムがパラメータn(整数)で行うべきことがあります。
質問はすべてのポイントをスキャンし、組み合わせによってすべての距離を試してみて、最終パスの長さを返すことができるアルゴリズムを見つけることです。
/**
* @return the distance between the two coordinates
*/
public double distance(Coordinate destination) {}
/**
* @return the farthest coordinate from start
*/
public Coordinate coordMax() {}
/**
* @return max distance using n points
* I would maybe try to go for a recursive solution
* and already have the 2 corner cases down.
*/
public double statMaxDistance(int n) {
if (n == 0)
return coordTable[0].distance(coordTable[coordTable.length - 1]);
if (n == 1)
return coordTable[0].distance(coordMax());
// TODO recursive step
return statMaxDistance();
}
質問は次のとおりです:
は、全体のパスの各点を反復することなく、このタスクを完了するための方法はありますは、我々はすでに2点の距離を得ることができる方法を持っていますすべての可能な組み合わせを試して、可能な限りすべての距離を計算して、最終的に最も遠い距離になるでしょうか?
経路全体に沿って1または2ポイントしか移動しないようなアプローチには感覚的に思えるかもしれませんが、このようなアルゴリズムは、3+基準ポイントが与えられた最大距離を計算するときに非常に貪欲です。