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

कई चरणों या कूद की अनुमति के साथ भूलभुलैया में चूहा


भूलभुलैया में चूहा समस्या बैकट्रैकिंग की प्रसिद्ध समस्याओं में से एक है। यहां हम उस समस्या को थोड़े बदलाव के साथ देखेंगे। मान लीजिए एक NxN भूलभुलैया M दिया गया है। प्रारंभिक बिंदु शीर्ष बायां कोना M[0, 0] है, और गंतव्य दायां नीचे कोना M[N-1, N-1] है। एक चूहा प्रारंभिक बिंदु पर रखा गया है। हमारा लक्ष्य प्रारंभिक बिंदु से अंतिम बिंदु तक एक पथ ढूंढना है जिसका उपयोग चूहा गंतव्य तक पहुंचने के लिए कर सके। यहां चूहा कूद सकता है (बदलाव)। अब कुछ प्रतिबंध हैं

  • चूहा या तो दाएं या नीचे की ओर बढ़ सकता है।
  • सेल में 0 इंगित करता है कि सेल अवरुद्ध है।
  • गैर-शून्य सेल वैध पथ इंगित करते हैं।
  • सेल के अंदर की संख्या उस सेल से चूहे द्वारा की जा सकने वाली अधिकतम कूद को इंगित करती है।

एल्गोरिदम

ratInMaze

begin   if destination is reached, then     print the solution matrix   else     1. Place the current cell inside the solution matrix as 1     2. Move forward or jump (check max jump value) and recursively check if move leads to solution or not.     3. If the move taken from the step 2 is not correct, then move down, and check it leads to the solution or not     4. If none of the solutions in step 2 and 3 are correct, then make the current cell 0.   end if end

उदाहरण

#include  #define N 4 using namespace std; void dispSolution(int sol[N][N]) {     for (int i = 0; i < N; i++) {         for (int j = 0; j < N; j++)             cout << sol[i][j] << " ";         cout << endl;     } } bool isSafe(int maze[N][N], int x, int y) { //check whether x,y is valid or not     // when (x, y) is outside of the maze, then return false     if (x >= 0 && x < N && y >= 0 && y < N && maze[x][y] != 0)         return true;     return false; } bool ratMazeSolve(int maze[N][N], int x, int y, int sol[N][N]) {     if (x == N - 1 && y == N - 1) { //if destination is found, return true         sol[x][y] = 1;         return true;     }     if (isSafe(maze, x, y)) {         sol[x][y] = 1; //mark 1 into solution matrix         for (int i = 1; i <= maze[x][y] && i < N; i++) {             if (ratMazeSolve(maze, x + i, y, sol)) //move right                 return true;             if (ratMazeSolve(maze, x, y + i, sol)) //move down                 return true;         }         sol[x][y] = 0; //if the solution is not valid, then make it 0         return false;     }     return false; } bool solveMaze(int maze[N][N]) {     int sol[N][N] = { { 0, 0, 0, 0 },         { 0, 0, 0, 0 },         { 0, 0, 0, 0 },         { 0, 0, 0, 0 }     };     if (!ratMazeSolve(maze, 0, 0, sol)) {         cout << "Solution doesn't exist";         return false;     }     dispSolution(sol);     return true; } main() {     int maze[N][N] = { { 2, 1, 0, 0 },         { 3, 0, 0, 1 },         { 0, 1, 0, 1 },         { 0, 0, 0, 1 }     };     solveMaze(maze); }

आउटपुट

1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1

  1. रैट इन ए मेज़ समस्या रैट इन ए मेज़ समस्या

    इस समस्या में, N x N आकार का एक दिया गया मेज़ है। स्रोत और गंतव्य स्थान क्रमशः टॉप-लेफ्ट सेल और बॉटम राइट सेल हैं। कुछ सेल मूव करने के लिए वैध हैं और कुछ सेल ब्लॉक हैं। यदि एक चूहा स्टार्ट वर्टेक्स से डेस्टिनेशन वर्टेक्स तक चलना शुरू करता है, तो हमें यह ढूंढना है कि क्या पथ पूरा करने का कोई तरीका ह

  1. C प्रोग्राम में भूलभुलैया में चूहा - बैकट्रैकिंग C प्रोग्राम में भूलभुलैया में चूहा - बैकट्रैकिंग

    समस्या विवरण भूलभुलैया में चूहा बैकट्रैकिंग का उपयोग करने वाली एक लोकप्रिय समस्या है। एक भूलभुलैया 2D मैट्रिक्स है जिसमें कुछ सेल अवरुद्ध हैं। उनमें से एक सेल स्रोत सेल है, जहां से हमें शुरू करना है। और दूसरा गंतव्य है, जहां हमें पहुंचना है। हमें किसी भी अवरुद्ध सेल में जाए बिना स्रोत से गंतव्य तक

  1. एकाधिक CSV फ़ाइलों को अलग-अलग एक्सेल शीट में आसानी से मर्ज करें - चरण-दर-चरण मार्गदर्शिका एकाधिक CSV फ़ाइलों को अलग-अलग एक्सेल शीट में आसानी से मर्ज करें - चरण-दर-चरण मार्गदर्शिका

    एक्सेल फ़ाइलों के साथ काम करते समय, कभी-कभी हम कई CSV फ़ाइलों के साथ आते हैं। अब, यह हमारे लिए अक्सर एक आवश्यकता बन जाती है कि उन CSV फ़ाइलों को एक ही वर्कबुक में मर्ज किया जाए। इस लेख में, मैं आपको एक्सेल में CSV फ़ाइलों को कई शीट्स में मर्ज करने के सभी चरण दिखाऊंगा। आप हमारे स्रोत CSV फ़ाइलों और अ