题目描述:斐波那契数列是类似这样的一个数列:1 1 2 3 5 8 ... 从第三个数起每个数字都是前面两个数之和。 现在规定一个由m列长度为n的斐波那契数列组成的n行m列斐波那契矩阵: 由输入给出前面两行的数字,然后从第三行起,每个数字由前两行中同一列的数字相加得到。 输入格式:第一行两个整数n和m。 第二、三行给出斐波那契矩阵的前两行数字。 输出格式:完整的n行m列斐波那契矩阵,同行数字间空格隔开。c++实现
时间: 2024-02-13 09:05:15 浏览: 206
C++输出斐波那契数列的两种实现方法
5星 · 资源好评率100%
以下是C++实现代码:
```cpp
#include <iostream>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
int a[20][20];
cin >> a[1][1] >> a[1][2];
cin >> a[2][1] >> a[2][2];
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (i == 1 && j == 1) continue;
if (i == 1 && j == 2) continue;
if (i == 2 && j == 1) continue;
if (i == 2 && j == 2) continue;
a[i][j] = a[i - 1][j] + a[i - 2][j] + a[i][j - 1] + a[i][j - 2];
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}
```
解释:
1. 首先,我们通过 `cin` 输入矩阵的行数 `n` 和列数 `m`。
2. 然后,我们创建一个二维数组 `a`,用于存储斐波那契矩阵中的每个数字。
`int a[20][20]` 表示创建一个大小为 20*20 的二维数组。
3. 接下来,我们使用两重循环遍历矩阵中的所有数字,并且依次计算每个数字的值。
前两行的数字已经通过 `cin` 输入得到;
从第三行开始,每个数字都是前两行中同一列的数字相加得到,以及当前行前两个数字、前两列中相同位置的数字相加得到。
4. 在循环中,我们将每个数字输出到控制台上,并在数字之间添加一个空格。
5. 最后,我们将所有数字输出完毕后,将当前行的所有数字换行,并结束程序。
阅读全文