इस ट्यूटोरियल में, हमें निरीक्षक द्वारा पकड़े बिना किसी असाइनमेंट को पास करने का तरीका खोजने के लिए एक एल्गोरिथम लिखना होगा। प्रत्येक छात्र को अपना असाइनमेंट निरीक्षक को जमा करना होता है। छात्र ए का असाइनमेंट छात्र बी के पास है, इसलिए छात्र बी को छात्र ए को असाइनमेंट वापस करना/पास करना है, बिना निरीक्षक के उन्हें नोटिस किए।
सभी छात्र कतार में बैठे हैं। हमें बिना पकड़े छात्र ए को असाइनमेंट वापस करने का एक तरीका खोजने की जरूरत है। विभिन्न आवश्यकताएं जिनके तहत वे असाइनमेंट पास कर सकते हैं, वे इस प्रकार हैं -
-
विद्यार्थी A (इंडेक्स i पर) अपने पड़ोसी को असाइनमेंट पास कर सकता है जो इंडेक्स (i-1) और (i+1) पर है
-
छात्र अपने साथ असाइनमेंट दे सकते हैं, प्राप्त कर सकते हैं या रख सकते हैं।
-
निरीक्षक सभी छात्रों को सूचकांक [आईएल, आरएल] से देख रहा है।
-
जब छात्र निरीक्षक की घड़ी की सीमा में होता है, तो वे असाइनमेंट भेज या प्राप्त नहीं कर सकते हैं।
-
यदि छात्र उस सीमा में असाइनमेंट अपने पास रखता है, तो निरीक्षक उन्हें पकड़ नहीं पाएगा।
हमें चार इनपुट दिए गए हैं p, q, r, s जहां p कुल छात्रों की संख्या है, q कुल चरणों की संख्या है जिसके दौरान पर्यवेक्षक il से rl तक निगरानी रखता है, c छात्र A की स्थिति है, और d छात्र बी की स्थिति है।
प्रत्येक चरण (q) में तीन इनपुट होते हैं -
-
कुल समय निरीक्षक दी गई सीमा पर नजर रखेगा।
-
सबसे बाईं ओर समावेशी श्रेणी में, निरीक्षक देख रहा है।
-
सबसे सही समावेशी रेंज, निरीक्षक, देख रहा है।
3 शब्दों का एक आउटपुट अनुक्रम आवश्यक है:"बाएं," "दाएं," और "रखें," छात्र की गतिविधि को दर्शाते हुए यदि वे असाइनमेंट (बाएं / दाएं) पास कर रहे हैं या इसे रख रहे हैं। उदाहरण के लिए,
कदम
इनपुट
8 3 2 7 1 4 6 2 1 8 3 5 6
आउटपुट
Right Keep Right Right Right Right
स्पष्टीकरण
इन निर्देशों का पालन करने से, असाइनमेंट 2 के छात्र से इंडेक्स 7 के छात्र तक बिना पकड़े ही पहुंच जाएगा।
इनपुट
5 1 1 3 1 2 5
आउटपुट
Keep Right Right
स्पष्टीकरण
इन निर्देशों का पालन करने से, असाइनमेंट 1 के छात्र से इंडेक्स 3 के छात्र तक बिना पकड़े ही पहुंच जाएगा।
समाधान खोजने के लिए दृष्टिकोण
किसी दिए गए उदाहरण में, यदि निरीक्षक उस सीमा में नजर रख रहा है, या तो वर्तमान में असाइनमेंट रखने वाला छात्र या जिस छात्र को असाइनमेंट भेजा जाना है, तो वह छात्र उस असाइनमेंट को अपने पास रखेगा। नहीं तो वह इसे अंतिम लक्ष्य की दिशा में अपने निकटवर्ती छात्र को देता है।
उदाहरण
#include <bits/stdc++.h> using namespace std; void solve(int p, int q, int r, int s, long t[], int l[], int ar[]){ int dir; string val; if (r < s) { dir = 1; val = "Right"; } else { dir = -1; val = "Left"; } string answer = ""; int i = 0, current = r; long tim = 1; while (1) { if (i < q && tim == t[i]) { if ((current >= l[i] && current <= ar[i]) || (current + dir >= l[i] && current + dir <= ar[i])) { answer += "Keep\n"; tim++; i++; continue; } i++; } current += dir; answer += val+"\n"; tim++; if (current == s) break; } cout << answer << endl; } int main(){ int p = 8, q = 3, r = 2, s = 7; long t[q + 2] = { 1,2,3 }; int l[q + 2] = { 4,1,5 }; int ar[q + 2] = { 6,8,6 }; solve(p, q, r, s, t, l, ar); return 0; }
आउटपुट
Right Keep Right Right Right Right
निष्कर्ष
इस ट्यूटोरियल में, हमने c++ कोड के साथ निरीक्षक द्वारा पकड़े बिना असाइनमेंट पास करने का तरीका खोजने के लिए एक एल्गोरिदम लिखना सीखा। हम इस कोड को जावा, पायथन और अन्य भाषाओं में भी लिख सकते हैं। उपरोक्त एल्गोरिथम प्रतिस्पर्धी कोडिंग प्रतियोगिताओं के लिए एक महत्वपूर्ण एल्गोरिथम है। इस प्रश्न में एक वास्तविक जीवन की समस्या शामिल है, जिसे हमने C++ कोड के माध्यम से हल किया है। हमें उम्मीद है कि आपको यह ट्यूटोरियल मददगार लगा होगा।