神奇的斐波那契

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("%
");
    }
}
原文地址:https://www.cnblogs.com/lwp-nicol/p/14339451.html