मान लीजिए कि कुछ बिंदु एक सरणी के रूप में दिए गए हैं। हमें सभी बिंदुओं पर जाने के लिए सेकंड में न्यूनतम समय निकालना होगा। कुछ शर्तें हैं।
- एक सेकंड में, यह लंबवत, क्षैतिज और तिरछे गति कर सकता है
- हमें बिंदुओं को उसी क्रम में देखना है जैसे वे सरणी में दिखाई देते हैं।
तो यदि अंक [(1, 1), (3, 4), (-1, 0)] हैं, तो आउटपुट 7 होगा। यदि हम सबसे छोटे मार्ग के लिए अनुक्रम की जांच करते हैं, तो अनुक्रम होगा (1, 1 ), (2, 2), (3, 3), (3, 4), (2, 3), (1, 2), (0, 1), (-1, 0)
इसे हल करने के लिए हम केवल दो लगातार बिंदुओं के अधिकतम x निर्देशांक अंतर और y लगातार दो बिंदुओं के अंतर को समन्वयित करेंगे। अधिकतम मान एक साथ जोड़े जाएंगे।
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int minTimeToVisitAllPoints(vector<vector<int>>& p) {
int ans = 0;
int n = p.size();
for(int i = 1; i < n; i++){
ans += max(abs(p[i][0] - p[i-1][0]), abs(p[i][1] - p[i-1] [1]));
}
return ans;
}
};
main(){
Solution ob;
vector<vector<int>> c = {{1,1},{3,4},{-1,0}};
cout << ob.minTimeToVisitAllPoints(c);
} इनपुट
[[1,1],[3,4],[-1,0]]
आउटपुट
7