एक N-भुजा बहुभुज में यदि दो बच्चे A और B शीर्ष पर खड़े हैं तो हमें उस शीर्ष संख्या का निर्धारण करना होगा जहां तीसरा व्यक्ति खड़ा होना चाहिए ताकि उस व्यक्ति को A और B दोनों तक पहुंचने के लिए न्यूनतम कूद की आवश्यकता हो।
ध्यान देने योग्य दो शर्तें हैं कि बहुभुज के शीर्ष घड़ी की दिशा में क्रमांकित हैं और हम हमेशा सबसे कम क्रमांकित शीर्ष चुनेंगे यदि कई उत्तर हैं।
vertexPosition(int sides, int vertexA, int vertexB) बहुभुज की भुजाओं की संख्या और शीर्ष A और B की स्थिति लेता है। फॉर लूप 1 से शुरू होता है और तब तक पुनरावृति करता है जब तक i भुजाओं की संख्या से कम या बराबर है। यदि i vertexA और vertexB के बराबर नहीं है तो i और vertexA के बीच निरपेक्ष अंतर और इसी तरह i और vertexB के बीच की गणना की जाती है और x और y में क्रमशः सहेजा जाता है।
int vertexPosition(int N, int vertexA, int vertexB){
int tempSum = INT_MAX;
int sum = 0;
int position = 0;
for (int i = 1; i <= N; i++) {
if (i != vertexA && i != vertexB){
int x = abs(i - vertexA);
int y = abs(i - vertexB);
अगला हम x और y के योग को sum वेरिएबल में सहेजते हैं और जांचते हैं कि क्या sum tempSum से कम है। यदि यह tempSum से कम है तो वर्तमान sum मान tempSum को असाइन किया जाता है और वर्तमान सूचकांक मान position वेरिएबल को असाइन किया जाता है। हम जांचते हैं कि क्या नया प्राप्त योग tempSum में संग्रहीत पिछले योग से कम है या नहीं ताकि हम A और B से N की निकटतम स्थिति वापस कर सकें। लूप समाप्त होने के बाद position वापस किया जाता है।
sum = x + y;
if (sum < tempSum){
tempSum = sum;
position = i;
}
}
}
return position; }
उदाहरण
नियमित N-भुजा बहुभुज पर तीसरे व्यक्ति की स्थिति निर्धारित करने के लिए निम्नलिखित कार्यान्वयन देखें।
#include <iostream>
using namespace std;
int vertexPosition(int N, int vertexA, int vertexB){
int tempSum = INT_MAX;
int sum = 0;
int position = 0;
for (int i = 1; i <= N; i++) {
if (i != vertexA && i != vertexB){
int x = abs(i - vertexA);
int y = abs(i - vertexB);
sum = x + y;
if (sum < tempSum){
tempSum = sum;
position = i;
}
}
}
return position;
}
int main(){
int N = 6, vertexA = 2, vertexB = 4;
cout << "The vertex on which N should stand = " << vertexPosition(N, vertexA, vertexB);
return 0;
}
आउटपुट
उपरोक्त कोड निम्नलिखित आउटपुट देगा:
The vertex on which N should stand = 6