C++程式:查詢可以組成偵察小組計程車兵索引


假設我們有一個包含n個元素的陣列A。有n個士兵站在一個圓圈上。對於第i個士兵,身高為A[i]。偵察小組可以由兩個相鄰計程車兵組成,他們的身高差最小。因此,他們中的每個人與另一個人相比都較不顯眼。我們必須找到可以組成偵察小組計程車兵對的索引。

因此,如果輸入類似於A = [10, 12, 13, 15, 10],則輸出將為(5, 1)。

步驟

為了解決這個問題,我們將遵循以下步驟:

n := size of A
D := |A[0] - A[n - 1]|
H := n
for initialize i := 1, when i < n, update (increase i by 1), do:
   if D > |A[i] - A[i - 1]|, then:
      D := |A[i] - A[i - 1]|
      H := i
print H and (H mod n)

示例

讓我們看看下面的實現以獲得更好的理解:

#include <bits/stdc++.h>
using namespace std;

void solve(vector<int> A) {
   int n = A.size();
   int D = abs(A[0] - A[n - 1]);
   int H = n;
   for (int i = 1; i < n; i++) {
      if (D > abs(A[i] - A[i - 1])) {
         D = abs(A[i] - A[i - 1]);
         H = i;
      }
   }
   cout << H << ", " << (H % n) + 1;
}
int main() {
   vector<int> A = { 10, 12, 13, 15, 10 };
   solve(A);
}

輸入

{ 10, 12, 13, 15, 10 }

輸出

5, 1

更新於:2022年3月3日

253 次瀏覽

開啟您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.