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
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP