给定一个矩阵[] [],其维度为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; }
如果我们运行上面的代码,它将生成以下输出-
输出结果
当添加相邻细胞数时,给出斐波那契数的矩阵中的细胞数为: