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

उदाहरण
इनपुट
row = 5, column = 4
आउटपुट
बिशप द्वारा देखे जा सकने वाले वर्गों की संख्या: 13
व्याख्या
ऊपर दिखाए गए चित्र के अनुसार बिशप द्वारा कवर किए जा सकने वाले वर्ग 9 हैं।
इनपुट
row = 1, column = 1
आउटपुट
बिशप द्वारा देखे जा सकने वाले वर्गों की संख्या: 7
व्याख्या
चूंकि यह कोने की स्थिति है, बिशप केवल एक विकर्ण को कवर कर सकता है जिसमें अधिकतम 7 वर्ग हो सकते हैं।
दृष्टिकोण
इस दृष्टिकोण में हम क्षैतिज और ऊर्ध्वाधर अधिकतम और न्यूनतम वर्ग स्थिति का उपयोग करके विकर्ण वर्गों की गणना करेंगे।
एल्गोरिदम चरण
- बिशप की स्थिति के लिए पूर्णांक
rowऔरcolumnलें। - फंक्शन
squares_visited(int first, int second)बिशप की स्थिति लेता है और एक चाल में उसके द्वारा देखे जा सकने वाले वर्गों की संख्या लौटाता है। - प्रारंभिक गिनती 0 लें।
- बाएं स्थिति का न्यूनतम, पंक्ति या कॉलम स्थिति में से न्यूनतम - 1 है।
- बाएं स्थिति का अधिकतम, 8 - पंक्ति या 9-कॉलम स्थिति में से अधिकतम है।
- दाएं स्थिति का न्यूनतम, पंक्ति या 9-कॉलम स्थिति में से न्यूनतम - 1 है।
- दाएं स्थिति का अधिकतम, 8 - पंक्ति या कॉलम स्थिति में से अधिकतम है।
- कुल वर्ग उपरोक्त गणना की गई स्थितियों का योग होंगे।
- परिणाम के रूप में गिनती लौटाएं।
C++ कोड उदाहरण
#include <bits/stdc++.h>
using namespace std;
int squares_visited(int first, int second) {
int count = 0;
int min_left = min(first, second) - 1;
int max_left = 8 - max(first, 9 - second);
int max_right = 8 - max(first, second);
int min_right = min(first, 9 - second) - 1;
count = min_left + min_right + max_right + max_left;
return count;
}
int main() {
int row = 3, column = 3;
cout << "बिशप द्वारा देखे जा सकने वाले वर्गों की संख्या: " << squares_visited(row, column);
return 0;
}
आउटपुट
बिशप द्वारा देखे जा सकने वाले वर्गों की संख्या: 11