时间限制: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;
}