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

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. - C++ में A % X = B को संतुष्ट करने वाले X के संभावित मानों की गिनती

    समस्या विवरण दो पूर्णांक A और B और एक संख्या X दिए गए हैं। लक्ष्य उन मानों की संख्या ज्ञात करना है जो X ले सकता है ताकि A % X = B। उपरोक्त समीकरण के लिए यदि A == B तो X के अनंत मान संभव हैं, इसलिए -1 लौटाएं। यदि A < B तो कोई हल नहीं होगा इसलिए 0 लौटाएं। यदि A > B तो (A-B) के भाजकों की संख्या

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

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

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

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