当在C ++中添加相邻单元格的数量时,矩阵中的单元格数量会给出斐波那契数

给定一个矩阵[] [],其维度为x列。目的是找到满足给定条件的矩阵单元格数:

单元格矩阵[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)。

  • 取一个matrix [] []并将其初始化。 

  • 函数check_square(long double num)接受一个数字,如果它是一个完美的平方,则返回true。

  • check_fibonacci(int num)如果num是斐波那契数,则函数返回true。

  • 如果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循环遍历。取总计=矩阵[i] [j]。

  • 根据与之相邻的单元格,将2,3或4加到总计中。

  • 如果新的总数是斐波那契数,则将check_fibonacci(total)返回true,因此增加计数。

  • 在所有for循环的末尾,返回计数作为结果。

示例

#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 << "当添加相邻细胞数时,给出斐波那契数的矩阵中的细胞数为: " << Fibonacci_cells(matrix);
   return 0;
}

如果我们运行上面的代码,它将生成以下输出-

输出结果

当添加相邻细胞数时,给出斐波那契数的矩阵中的细胞数为:

猜你喜欢