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

सी ++ में संशोधित नाइट द्वारा पहुंचा जा सकने वाली सभी संभावित स्थिति की गणना करें

इस ट्यूटोरियल में, हम मॉडिफाइड नाइट द्वारा प्राप्त संभावित पदों की संख्या का पता लगाने के लिए एक कार्यक्रम पर चर्चा करेंगे।

इसके लिए हमें 8*8 की बिसात दी जाएगी। हमारा काम यह पता लगाना है कि दिए गए चरणों की संख्या के साथ संशोधित नाइट कितने पदों पर कब्जा कर सकता है।

उदाहरण

#include <bits/stdc++.h>
using namespace std;
//finding the positions
void findSteps(int current_row, int current_column,int curr, int board_size, int steps,int* visited){
   //bound checking
   if (current_row >= board_size || current_row < 0
      || current_column >= board_size || current_column < 0
      || curr > steps) {
      return;
   }
   if (curr == steps) {
      *((visited + (current_row)*board_size) + current_column) = 1;
      return;
   }
   findSteps(current_row - 2, current_column - 1,curr + 1, board_size, steps, visited);
   findSteps(current_row - 2, current_column + 1,curr + 1, board_size, steps, visited);
   findSteps(current_row - 1, current_column - 2,curr + 1, board_size, steps, visited);
   findSteps(current_row - 1, current_column - 1,curr + 1, board_size, steps, visited);
   findSteps(current_row - 1, current_column + 1,curr + 1, board_size, steps, visited);
   findSteps(current_row - 1, current_column + 2,curr + 1, board_size, steps, visited);
   findSteps(current_row + 1, current_column - 2,curr + 1, board_size, steps, visited);
   findSteps(current_row + 1, current_column - 1,curr + 1, board_size, steps, visited);
   findSteps(current_row + 1, current_column + 1,curr + 1, board_size, steps, visited);
   findSteps(current_row + 1, current_column + 2,curr + 1, board_size, steps, visited);
   findSteps(current_row + 2, current_column - 1,curr + 1, board_size, steps, visited);
   findSteps(current_row + 2, current_column + 1,curr + 1, board_size, steps, visited);
   return;
}
int countSteps(int current_row, int current_column,int board_size, int steps){
   int visited[board_size][board_size];
   for (int i = 0; i < board_size; i++) {
      for (int j = 0; j < board_size; j++) {
         visited[i][j] = 0;
      }
   }
   int answer = 0;
   findSteps(current_row, current_column, 0,board_size, steps, (int*)visited);
   for (int i = 0; i < board_size; i++) {
      for (int j = 0; j < board_size; j++) {
         if (visited[i][j] == 1) {
            answer++;
         }
      }
   }
   return answer;
}
int main(){
   int board_size = 8, steps = 1;
   int current_row = 4, current_column = 4;
   cout << countSteps(current_row, current_column,board_size, steps);
   return 0;
}

आउटपुट

12

  1. X के सभी संभावित मानों की गणना इस प्रकार करें कि C++ में A % X =B

    दो पूर्णांक A और B और एक संख्या X को देखते हुए। लक्ष्य उन मानों की गणना करना है जो X के पास हो सकते हैं ताकि A%X=B हो। उपरोक्त समीकरण के लिए यदि, A==B तो X के अनंत मान संभव हैं, इसलिए -1 लौटाएं। यदि ए बी तो परिणाम के रूप में (एबी) के भाजक की गणना करें। उदाहरण के लिए इनपुट A=5, B=2 आउटपुट Count of

  1. C++ में एक चाल में बिशप द्वारा देखे जा सकने वाले वर्गों की कुल संख्या की गणना करें

    एक शतरंज की बिसात पर जिसे 8 X 8 ग्रिड के रूप में दर्शाया गया है, हमें पंक्ति और स्तंभ स्थिति के रूप में बिशप का स्थान दिया गया है। लक्ष्य उन वर्गों की कुल संख्या का पता लगाना है जो बिशप एक चाल में देख सकते हैं। हम जानते हैं कि बिशप सभी दिशाओं में घूम सकता है (तिरछे बाएँ ऊपर/नीचे और दाएँ ऊपर/नीचे)।

  1. C++ में काउंट डिरेंजमेंट (क्रमपरिवर्तन जैसे कि कोई तत्व अपनी मूल स्थिति में प्रकट नहीं होता है)

    डिरेंजमेंट एन नंबरों का क्रमचय है जैसे कि मूल स्थिति में कोई संख्या दिखाई नहीं देती है। उदाहरण के लिए { 1,2,3 } का एक संभावित विचलन { 2,1,3 } है। इसमें कोई तत्व अपनी मूल स्थिति में नहीं है। यहाँ लक्ष्य N संख्याओं के लिए संभावित विचलनों की गणना करना है। हम इसे एक पुनरावर्ती समाधान का उपयोग करके करें