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)

示例

让我们看看下面的实现以获得更好的理解:

Open Compiler
#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); }

Explore our latest online courses and learn new skills at your own pace. Enroll and become a certified expert to boost your career.

输入

{ 10, 12, 13, 15, 10 }

输出

5, 1

更新于:2022年3月3日

253 次浏览

开启您的职业生涯

完成课程获得认证

开始学习
广告