एक स्ट्रिंग दी गई है, प्रोग्राम को सबसे छोटा पथ प्रदर्शित करना होगा जो उस सबसे छोटे पथ का उपयोग करके स्ट्रिंग को स्क्रीन पर प्रिंट करेगा।
जैसे स्क्रीन वर्णमाला को इस प्रारूप में संग्रहीत करेगी:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
उदाहरण
इनपुट: HUP आउटपुट: Move Down Move Down Move Down destination reached Move Left Move Left Move Down Move Down Move Down destination reached Move Up destination reached
यहां उपयोग किया गया दृष्टिकोण वर्णों को n x n मैट्रिक्स में संग्रहीत करना और निम्नलिखित ऑपरेशन करना है:
यदि पंक्ति अंतर ऋणात्मक है तो Move Up यदि पंक्ति अंतर धनात्मक है तो Move Down यदि कॉलम अंतर ऋणात्मक है तो Move Left यदि कॉलम अंतर धनात्मक है तो Move Right
एल्गोरिदम
शुरुआत
चरण 1 → फंक्शन void printpath(char str[]) घोषित करें
int i = 0, cx=0, cy=0 घोषित करें
लूप जब तक str[i] != '\0'
int n1 = (str[i] - 'A') / 5 घोषित करें
int n2 = (str[i] - 'B' + 1) % 5 घोषित करें
लूप जब तक cx > n1
"Move Up" प्रिंट करें
cx--
लूप समाप्त
लूप जब तक cy > n2
"Move Left" प्रिंट करें
cy--
लूप समाप्त
लूप जब तक cx < n1
"Move Down" प्रिंट करें
cx++
लूप समाप्त
लूप जब तक cy < n2
"Move Down" प्रिंट करें
cy++
लूप समाप्त
"destination reached" प्रिंट करें
i++
चरण 2 → main() में
char str[] = {"HUP"} घोषित करें
printpath(str) कॉल करें
समाप्त
उदाहरण
#include <stdio.h>
void printpath(char str[]){
int i = 0;
// 'A' कैरेक्टर से शुरू करें जो पोजीशन (0, 0) पर मौजूद है
int cx = 0, cy = 0;
while (str[i] != '\0'){
// अगले कैरेक्टर के कोऑर्डिनेट ढूंढें
int n1 = (str[i] - 'A') / 5;
int n2 = (str[i] - 'B' + 1) % 5;
// यदि डेस्टिनेशन ऊपर है तो Move Up
while (cx > n1){
printf("Move Up\n");
cx--;
}
// यदि डेस्टिनेशन बाएं है तो Move Left
while (cy > n2){
printf("Move Left\n");
cy--;
}
// यदि डेस्टिनेशन नीचे है तो Move Down
while (cx < n1){
printf("Move Down\n");
cx++;
}
// यदि डेस्टिनेशन दाएं है तो Move Right
while (cy < n2){
printf("Move Down\n");
cy++;
}
// इस बिंदु पर, डेस्टिनेशन पहुंच गया
printf("destination reached\n");
i++;
}
}
int main(int argc, char const *argv[]){
char str[] = {"HUP"};
printpath(str);
return 0;
}
आउटपुट
यदि हम उपरोक्त प्रोग्राम चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा:
Move Down Move Down Move Down destination reached Move Left Move Left Move Down Move Down Move Down destination reached Move Up destination reached