1286 神奇的斐波那契
这道题卡了我一小时!矩阵的一些操作还是有点不熟悉啊,有待提高!
题目描述:
斐波那契数列大家都熟悉吧,不熟悉的问问旁边的吧,
不能多问哦,
现在我们又要用到斐波那契数列了,
给定两个小于等于15的数m,n,
构造一个m行n列的矩阵,规则如下,
第奇数列从上到下是斐波那契数列的前几项
第偶数列从下到上是斐波那契数列的前几项
输入描述:
/*
两个数m,n
*/
12 15
输出描述:
/*
输出题目描述的矩阵,每个数据占5个字符宽,并左对齐
*/
1 144 1 144 1 144 1 144 1 144 1 144 1 144 1
1 89 1 89 1 89 1 89 1 89 1 89 1 89 1
2 55 2 55 2 55 2 55 2 55 2 55 2 55 2
3 34 3 34 3 34 3 34 3 34 3 34 3 34 3
5 21 5 21 5 21 5 21 5 21 5 21 5 21 5
8 13 8 13 8 13 8 13 8 13 8 13 8 13 8
13 8 13 8 13 8 13 8 13 8 13 8 13 8 13
21 5 21 5 21 5 21 5 21 5 21 5 21 5 21
34 3 34 3 34 3 34 3 34 3 34 3 34 3 34
55 2 55 2 55 2 55 2 55 2 55 2 55 2 55
89 1 89 1 89 1 89 1 89 1 89 1 89 1 89
144 1 144 1 144 1 144 1 144 1 144 1 144 1 144
代码如下:
#include <stdio.h>
#include<math.h>
int mins(int x,int y){
return x<y?x:y;
}
int main()
{
int i =0,j=0;
int m =0,n=0;
int a[15]={0};
int b[15][15] = {0};
a[0] = 1;
a[1] = 1;
scanf("%d %d",&m,&n);
//斐波那契数列
for(i=2;i<m;i++)
a[i] = a[i-1] + a[i-2];
for(j=0;j<mins(m,n)+abs(m-n);j++)
for(i=0;i<m;i++){
b[i][j] = a[i];
//打印
for(i=0;i<m;i++){
for(j=0;j<n;j++){
if(j%2==0)
printf("%-5d",b[i][j]);
else
printf("%-5d",b[m-1-i][j]);
}
printf("%
");
}
}