मान लीजिए हमारे पास 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