मान लीजिए हमारे पास एक मैट्रिक्स एम है। यह सितारों और अक्षरों से भरा है। हमें यह पता लगाना है कि किस अक्षर के चारों ओर सबसे अधिक तारे हैं। तो अगर मैट्रिक्स नीचे जैसा है -
यहाँ A और C के चारों ओर 7 तारे हैं। यह अधिकतम है। चूंकि ए शब्दावली की दृष्टि से छोटा है, इसलिए यह आउटपुट होगा।
दृष्टिकोण सरल है, हम पात्रों को गिनेंगे, फिर जब एक वर्ण मिल जाए, तो उसके चारों ओर तारों को गिनें। मूल्य को मानचित्र के अंदर भी स्टोर करें। मानचित्र से जहां आकार अधिकतम है, वह मुद्रित किया जाएगा।
उदाहरण
#include <iostream> #include<unordered_map> #define MAX 4 using namespace std; int checkStarCount(int mat[][MAX], int i, int j, int n) { int count = 0; int move_row[] = { -1, -1, -1, 0, 0, 1, 1, 1 }; int move_col[] = { -1, 0, 1, -1, 1, -1, 0, 1 }; for (int k = 0; k < 8; k++) { int x = i + move_row[k]; int y = j + move_col[k]; if (x >= 0 && x < n && y >= 0 && y < n && mat[x][y] == '*') count++; } return count; } char charWithMaxStar(int mat[][4], int n) { unordered_map<char, int> star_count_map; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if ((mat[i][j] - 'A') >= 0 && (mat[i][j] - 'A') < 26) { int stars = checkStarCount(mat, i, j, n); star_count_map[mat[i][j]] = stars; } } } int max = -1; char result = 'Z' + 1; for (auto x : star_count_map) { if (x.second > max || (x.second == max && x.first < result)) { max = x.second; result = x.first; } } return result; } int main() { int mat[][4] = { { 'B', '*', '*', '*' }, { '*', '*', 'C', '*' }, { '*', 'A', '*', '*' }, { '*', '*', '*', 'D' } }; int n = 4; cout << charWithMaxStar(mat, n) << " has maximum amount of stars around it"; }
आउटपुट
A has maximum amount of stars around it