Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> सी प्रोग्रामिंग

C प्रोग्राम में स्क्रीन पर स्ट्रिंग प्रिंट करने का सबसे छोटा पथ


एक स्ट्रिंग दी गई है, प्रोग्राम को सबसे छोटा पथ प्रदर्शित करना होगा जो उस सबसे छोटे पथ का उपयोग करके स्ट्रिंग को स्क्रीन पर प्रिंट करेगा।

जैसे स्क्रीन वर्णमाला को इस प्रारूप में संग्रहीत करेगी:

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

  1. 0-1 BFS (बाइनरी वेट ग्राफ में सबसे छोटा पथ) C प्रोग्राम में? 0-1 BFS (बाइनरी वेट ग्राफ में सबसे छोटा पथ) C प्रोग्राम में?

    मान लीजिए हमारे पास कुछ नोड्स और कनेक्टेड एज वाला एक ग्राफ है। प्रत्येक एज का बाइनरी वेट है। इसलिए वेट या तो 0 या 1 होगा। एक सोर्स वर्टेक्स दिया गया है। हमें सोर्स से किसी भी अन्य वर्टेक्स तक सबसे छोटा पथ ढूंढना है। मान लीजिए ग्राफ नीचे जैसा है: सामान्य BFS एल्गोरिदम में सभी एज वेट समान होते हैं।

  1. पायथन प्रोग्राम: दी गई स्ट्रिंग के सभी क्रमपरिवर्तन प्रिंट करें पायथन प्रोग्राम: दी गई स्ट्रिंग के सभी क्रमपरिवर्तन प्रिंट करें

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक स्ट्रिंग दी गई है, हमें स्ट्रिंग के सभी संभावित क्रमपरिवर्तन प्रदर्शित करने हैं। उदाहरण # रूपांतरण def toString(List): return .join(List) # क्रमपरिवर्तन def permute(a, l, r): if l == r: print(toString(a))

  1. पायथन प्रोग्राम: स्ट्रिंग में इवन लेंथ वाले शब्द प्रिंट करें पायथन प्रोग्राम: स्ट्रिंग में इवन लेंथ वाले शब्द प्रिंट करें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट एक स्ट्रिंग दिए जाने पर, हमें स्ट्रिंग में इवन लेंथ वाले सभी शब्दों को प्रदर्शित करने की आवश्यकता है। दृष्टिकोण split() फ़ंक्शन का उपयोग करके इनपुट स्ट्रिंग को विभाजित करें। for लूप