एक मैट्रिक्स [ ][ ] दिया गया है जिसके आयाम row x col हैं। लक्ष्य मैट्रिक्स के उन सेल्स की गिनती ढूंढना है जो दी गई शर्त को पूरा करते हैं:
सेल मैट्रिक्स [i][j] का मान + इसके आसन्न सेल्स की संख्या = एक फाइबोनैचि संख्या
फाइबोनैचि श्रृंखला में संख्याएं:- 0, 1, 1, 2, 3, 5, 8, 13, 21, 43 …..
उदाहरणों से समझते हैं।
उदाहरण के लिए
इनपुट - matrix[row][col] = {{1, 4, 1}, {2, 0, 1}, {5, 1, 1}
आउटपुट - मैट्रिक्स में उन सेल्स की संख्या जिनमें आसन्न सेल्स की संख्या जोड़ने पर फाइबोनैचि संख्या मिलती है: 4
व्याख्या
0 1 2
0 1 4 1
1 2 0 1
2 5 1 1
सेल(0,0) → 1+2=3 ( 2 आसन्न सेल्स (1,0) और (0,1) )
सेल(0,2) → 1+2=3
सेल(1,0) → 2+3=5
सेल(2,2) → 1+2=3
इनपुट - matrix[row][col] = {{0,0,0}, {0, 1, 0}, {0, 0, 0} }
आउटपुट -मैट्रिक्स में उन सेल्स की संख्या जिनमें आसन्न सेल्स की संख्या जोड़ने पर फाइबोनैचि संख्या मिलती है: 9
व्याख्या
0 1 2
0 0 0 0
1 0 1 0
2 0 0 0
सेल(0,0) → 0+2=2 ( 2 आसन्न सेल्स (1,0) और (0,1) ) इसी तरह सेल्स (0,2), (2,2) और (2,0)
सेल(0,1) → 0+3=3 ( 3 आसन्न सेल्स (0,1) और (0,2) और (1,1) ) इसी तरह सेल्स (1,0), (1,2) और (2,1)
सेल (1,1) → 1+4=5
सभी 9 सेल्स गिने जाते हैं।
नीचे दिए गए प्रोग्राम में उपयोग किया गया दृष्टिकोण
किसी भी प्रकार के मैट्रिक्स में केवल तीन प्रकार के सेल्स होंगे। कोने के सेल्स में 2 आसन्न सेल्स होंगे, 3 आसन्न सेल्स वाले सेल्स और 4 आसन्न सेल्स वाले सेल्स केवल। इन सेल्स के मान में 2, 3 या 4 जोड़ें और फ़ंक्शन check_fibonacci(int num) का उपयोग करके जांचें कि योग फाइबोनैचि संख्या है या नहीं।
- एक मैट्रिक्स[][] लें और इसे इनिशियलाइज़ करें।
- फ़ंक्शन check_square(long double num) एक संख्या लेता है और यदि यह पूर्ण वर्ग है तो true लौटाता है।
- फ़ंक्शन check_fibonacci(int num) true लौटाता है यदि num फाइबोनैचि संख्या है।
- यदि check_square(5 * num * num + 4) || check_square(5 * num * num - 4) true लौटाता है तो num फाइबोनैचि संख्या है।
- फ़ंक्शन Fibonacci_cells(int matrix[row][col]) मैट्रिक्स में उन सेल्स की गिनती लौटाता है जो आसन्न सेल्स की संख्या जोड़ने पर फाइबोनैचि संख्या देते हैं।
- प्रारंभिक गिनती 0 लें।
- i=0 से i<row और j=0 से j<col तक for लूप का उपयोग करके पार करें। total = matrix[i][j] लें।
- इसके आसन्न सेल्स के आधार पर total में 2, 3 या 4 जोड़ें।
- यदि नया total फाइबोनैचि संख्या है तो check_fibonacci(total) true लौटाएगा, तो count बढ़ाएं।
- सभी for लूप के अंत में परिणाम के रूप में count लौटाएं।
उदाहरण
#include <bits/stdc++.h> using namespace std; #define row 3 #define col 3 bool check_square(long double num) { long double val = sqrt(num); return ((val - floor(val)) == 0); } bool check_fibonacci(int num) { return check_square(5 * num * num + 4) || check_square(5 * num * num - 4); } int Fibonacci_cells(int matrix[row][col]) { int count = 0; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { int total = matrix[i][j]; if ((i == 0 && j == 0) || (i == row - 1 && j == 0) || (i == 0 && j == col - 1) || (i == row - 1 && j == col - 1)) { total = total + 2; } else if (i == 0 || j == 0 || i == row - 1 || j == col - 1) { total = total + 3; } else { total = total + 4; } if (check_fibonacci(total)) { count++; } } } return count; } int main() { int matrix[row][col] = {{1, 4,1},{2,0,1},{5,1,1}}; cout << "Count of cells in a matrix which give a Fibonacci number when the count of adjacent cells is added are: " << Fibonacci_cells(matrix); return 0; } यदि हम उपरोक्त कोड चलाते हैं तो यह निम्नलिखित आउटपुट उत्पन्न करेगा -
आउटपुट
Count of cells in a matrix which give a Fibonacci number when the count of adjacent cells is added are: