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

C++ में नाइट की संभावित चालें


इस समस्या में, हमें एक m*n शतरंज बोर्ड दिया गया है जिसमें भरी हुई स्थितियों को 1 से चिह्नित किया गया है यानी यदि board[i][j] = 1, तो वहां कोई मोहरा है और हमें शुरुआती स्थिति दी गई है। हमारा कार्य बोर्ड में नाइट के लिए संभावित चालों की कुल संख्या ढूंढना है, यदि सभी मोहरे एक ही रंग के हैं यानी कोई हमला नहीं किया जाएगा।

शतरंज में नाइट एक मोहरा है जो सभी दिशाओं में कुछ विशेष प्रकार की चाल से चल सकता है। शतरंज में नाइट की चालें हैं:

  • दो क्षैतिज चालें और एक लंबवत चाल।

  • दो लंबवत चालें और एक क्षैतिज चाल।

समस्या को समझने के लिए एक उदाहरण लेते हैं,

इनपुट -

board[][] = {
    {0, 1, 0, 0},
    {0, 0, 1, 1},
    {0, 1, 1, 0},
    {0, 0, 0, 1}
};
स्थिति: (1,1)

आउटपुट - 4

इस समस्या को हल करने के लिए, हमें शतरंज बोर्ड में नाइट की सभी संभावित चालों में से वैध चालें ढूंढनी होंगी। एक चाल वैध है यदि वह शतरंज बोर्ड में एक स्थिति पर जाती है और किसी अन्य मोहरे द्वारा पूर्व-कब्जा नहीं की गई है।

इसके लिए, हम दी गई स्थिति से नाइट की सभी संभावित चालों को स्टोर करेंगे। और फिर प्रत्येक चाल की वैधता की जांच करेंगे और प्रत्येक वैध चाल के लिए काउंट बढ़ाएंगे।

उदाहरण

हमारे समाधान का कार्यान्वयन दर्शाने वाला प्रोग्राम:

#include <bits/stdc++.h>
#define N 8
#define M 8
using namespace std;

int countPossibleMoves(int mat[N][M], int p, int q) {
    int Xmoves[8] = {2, 1, -1, -2, -2, -1, 1, 2};
    int Ymoves[8] = {1, 2, 2, 1, -1, -2, -2, -1};
    int count = 0;
    for (int i = 0; i < 8; i++) {
        int x = p + Xmoves[i];
        int y = q + Ymoves[i];
        if (x >= 0 && y >= 0 && x < N && y < M && mat[x][y] == 0)
            count++;
    }
    return count;
}

int main() {
    int mat[N][M] = {{0, 1, 0, 0},
                     {0, 0, 1, 1},
                     {0, 1, 1, 0},
                     {0, 0, 0, 1}};
    int position[2] = {1, 1};
    cout << "स्थिति (" << position[0] << " , " << position[1] << ") से नाइट के लिए संभावित चालों की कुल संख्या है: ";
    cout << countPossibleMoves(mat, position[0], position[1]);
    return 0;
}

आउटपुट

स्थिति (1 , 1) से नाइट के लिए संभावित चालों की कुल संख्या है: 4
  1. C++ में संभावित टाइमिंग C++ में संभावित टाइमिंग

    इस समस्या में, हमें ग्लो डिजिट डिस्प्ले या सेवन-सेगमेंट डिस्प्ले (कैलकुलेटर में जैसा) का उपयोग करके दो अंकों का समय दिया गया है। हमारा कार्य डिस्प्ले के एक बिट को चमकाने या हटाने से होने वाली अन्य टाइमिंग की संभावना की गणना करना है। सेवन-सेगमेंट डिस्प्ले एक विशेष डिस्प्ले है जिसका उपयोग डिस्प्ले की

  1. C++ में न्यूनतम नाइट मूव्स C++ में न्यूनतम नाइट मूव्स

    मान लीजिए हमारे पास एक अनंत शतरंज बोर्ड है जिसके कोऑर्डिनेट्स -इनफिनिटी से +इनफिनिटी तक हैं, और हमारे पास [0, 0] स्क्वायर पर एक नाइट है। नाइट के 8 संभावित मूव्स होते हैं, जैसा कि नीचे दिखाया गया है। प्रत्येक मूव कार्डिनल डायरेक्शन में दो स्क्वायर, फिर ऑर्थोगोनल डायरेक्शन में एक स्क्वायर होता है। ह

  1. C++ में सभी संभावित फुल बाइनरी ट्रीज़ C++ में सभी संभावित फुल बाइनरी ट्रीज़

    मान लीजिए एक फुल बाइनरी ट्री एक बाइनरी ट्री है जहां प्रत्येक नोड के ठीक 0 या 2 बच्चे होते हैं। इसलिए हमें N नोड्स वाले सभी संभावित फुल बाइनरी ट्रीज़ की सूची ढूंढनी है। उत्तर में प्रत्येक ट्री के प्रत्येक नोड का node.val = 0 होना चाहिए। लौटाए गए ट्री किसी भी क्रम में हो सकते हैं। यदि इनपुट 7 है, तो ट