問題:
円があるとします。その円には n 個のガソリン ポンプがあります。2 セットのデータが与えられます。
- ガソリンポンプが供給するガソリンの量。
- そのガソリン ポンプから次のガソリン ポンプまでの距離。
トラックが円を完成できる最初のポイントを計算します
問題を解決しました。問題を正しく解決したかどうかを知りたいです。
アルゴリズム:
出発点から始めて、距離を移動するために残ったガソリンの残りを追加しようとしました。値が < 0 で、再び開始に到達した場合、解は存在しません。それ以外の場合は、最後に到達するまでループを続けます。終了は常に開始 + 1 です。また、アルゴリズム O(n) も知っています。適切なロジックを使用して、O(n) がどのように機能するかを説明できる人もいます。
int PPT(int P[], int D[], int N)
{
int start = 0, end = 1, cur_ptr = P[0] - D[0], i = start;
while(start != end)
{
if(cur_ptr < 0)
{
start = (i + 1) % N;
end = (start + 1) % N;
cur_ptr = 0;
if(start == 0) return -1; // if start again becomes 0 then no solution exists
}
i = (i + 1) % N;
cur_ptr += P[i] - D[i];
}
}