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

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


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

नाइट इज चेस एक ऐसा टुकड़ा है जो किसी विशेष प्रकार की चाल के साथ सभी दिशाओं में आगे बढ़ सकता है। शतरंज में नाइट की चालें हैं -

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

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

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

इनपुट -

board[][] = {
   { 0, 1, 0, 0 },
   { 0, 0, 1, 1 },
   { 0, 1, 1, 0 },
   { 0, 0, 0, 1 }
};
Position : (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<<"Total number of moves possible for Knight from position ("<<position[0]<<" , "<<position[1]<<") are : ";
   cout<<countPossibleMoves(mat, position[0], position[1]);
   return 0;
}

आउटपुट

Total number of moves possible for Knight from position (1 , 1) are : 4

  1. C++ में संभावित समय

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

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

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

  1. C++ में सभी संभावित पूर्ण बाइनरी ट्री

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