c++题:斐波那契矩阵

斐波那契矩阵

时间限制:1000ms 内存限制:128mb

题目描述:

斐波那契数列是类似这样的一个数列:1 1 2 3 5 8 ... 从第三个数起每个数字都是前面两个数之和。
现在规定一个由m列长度为n的斐波那契数列组成的n行m列斐波那契矩阵:
由输入给出前面两行的数字,然后从第三行起,每个数字由前两行中同一列的数字相加得到。

输入格式:

第一行两个整数n和m。
第二、三行给出斐波那契矩阵的前两行数字。

输出格式:

完整的n行m列斐波那契矩阵,同行数字间空格隔开。

样例数据:

样例输入

5 3
1 2 3
4 5 6

样例输出

1 2 3
4 5 6
5 7 9
9 12 15
14 19 24

数据范围

对于70% 的数据,2<=n<=30;
对于100% 的数据,2<n<=50,1<=m<=100,给定的前两行数字均为不超过100的整数。


#include<bits/stdc++.h>
using namespace std;
int a[105][105];
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=2;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    for(int i=3;i<=n;i++){
        for(int j=1;j<=m;j++){
            a[i][j]=a[i-1][j]+a[i-2][j];
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}
 

这是修改了的正确满分的

 
#include<bits/stdc++.h>
using namespace std;
long long a[105][105];
int main(){
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=2;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
        }
    }
    for(int i=3;i<=n;i++){
        for(int j=1;j<=m;j++){
            a[i][j]=a[i-1][j]+a[i-2][j];
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++)
        {
            cout<<a[i][j]<<" ";
        }
        cout<<endl;
    }
    return 0;
}

【以下回答由 GPT 生成】

n, m = map(int, input().split())
first_row = list(map(int, input().split()))
second_row = list(map(int, input().split()))

fibonacci_matrix = [first_row, second_row]

for i in range(2, n):
    current_row = []
    for j in range(m):
        current_row.append(fibonacci_matrix[i-1][j] + fibonacci_matrix[i-2][j])
    fibonacci_matrix.append(current_row)

for row in fibonacci_matrix:
    print(" ".join(map(str, row)))


【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

修改如下,供参考:

#include <iostream>
using namespace std;
int a[105][105];
int main() {
    int n, m, i, j;
    cin >> n >> m;
    for (i = 0; i < 2; i++) {
        for (j = 0; j < m; j++) 
            cin >> a[i][j];
    }
    for (i = 2; i < n; i++) {
        for (j = 0; j < m; j++) 
            a[i][j] = a[i - 1][j] + a[i - 2][j];
    }
    for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++) {
            if (j)
                cout << " " << a[i][j];
            else
                cout << a[i][j];
        }
        if (i < n - 1)  cout << endl;
    }
    return 0;
}