মান লিজিয়ে, ২D প্লেনে দুটি বিন্দু a এবং b আছে যাদের কোঅর্ডিনেট যথাক্রমে (x1, y1) এবং (x2, y2)। বর্তমানে আমরা 'a' বিন্দুতে আছি এবং আমরা ১ একক দূরত্বে খাড়া বা দাঁড়ি দিকে যেতে পারি। আমরা a থেকে b-এ যাব, তারপর আবার a-তে ফিরে আসব, এবং আবার b-এ যাব। একই বিন্দু দ্বিবার পার করা অনুমোদিত নয়, a এবং b বাদে। আমাদের লক্ষ্য হলো পুরো যাত্রায় আমরা কী কী মোভ করব তা বের করা এবং আউটপুট করা। ডানে যাওয়ায় 'R', বামে যাওয়ায় 'L', উপরে যাওয়ায় 'U', নিচে যাওয়ায় 'D' প্রিন্ট করব। একটি বিষয় লক্ষ্য করুন যে x2 > x1 এবং y2 > y1।
যেমন, ইনপুট হলে x1 = 0, y1 = 1, x2 = 3, y2 = 4, তবে আউটপুট হবে UUURRRDDDLLLLUUUURRRRDRDDDDLLLLU
সমাধানের ধাপসমূহ
এই সমস্যাটি সমাধান করার জন্য নিচের ধাপগুলো অনুসরণ করব:
s := খালি স্ট্রিং i := 0 থেকে y2-y1-১ পর্যন্ত: s-র শেষে "U" যোগ করুন i := 0 থেকে x2-x1-১ পর্যন্ত: s-র শেষে "R" যোগ করুন i := 0 থেকে y2-y1-১ পর্যন্ত: s-র শেষে "D" যোগ করুন i := 0 থেকে x2-x1-১ পর্যন্ত: s-র শেষে "L" যোগ করুন s-র শেষে "LU" যোগ করুন i := 0 থেকে y2-y1-১ পর্যন্ত: s-র শেষে "U" যোগ করুন i := 0 থেকে x2-x1-১ পর্যন্ত: s-র শেষে "R" যোগ করুন s-র শেষে "RD" যোগ করুন s-র শেষে "RD" যোগ করুন i := 0 থেকে y2-y1-১ পর্যন্ত: s-র শেষে "D" যোগ করুন i := 0 থেকে x2-x1-১ পর্যন্ত: s-র শেষে "L" যোগ করুন s-র শেষে "LU" যোগ করুন return s
উদাহরণ
নিচের ইমপ্লিমেন্টেশনটি দেখুন আরও ভালো বুঝতে:
#include <bits/stdc++.h> using namespace std; string solve(int x1, int y1, int x2, int y2){ string s = ""; for(int i = 0; i < y2 - y1; i++) s.append("U"); for(int i = 0; i < x2 - x1; i++) s.append("R"); for(int i = 0; i < y2 - y1; i++) s.append("D"); for(int i = 0; i < x2 - x1; i++) s.append("L"); s.append("LU"); for(int i = 0; i < y2 - y1; i++) s.append("U"); for(int i = 0; i < x2 - x1; i++) s.append("R"); s.append("RD"); s.append("RD"); for(int i = 0; i < y2 - y1; i++) s.append("D"); for(int i = 0; i < x2 - x1; i++) s.append("L"); s.append("LU"); return s; } int main() { int x1 = 0, y1 = 1, x2 = 3, y2 = 4; cout<< solve(x1, y1, x2, y2); return 0; } ইনপুট
0, 1, 3, 4
আউটপুট
UUURRRDDDLLLLUUUURRRRDRDDDDLLLLU