0
点赞
收藏
分享

微信扫一扫

华为机试题35-蛇形矩阵

非常帅气的昵称吧 2022-04-21 阅读 73
c语言

描述

蛇形矩阵是由1开始的自然数依次排列成的一个矩阵上三角形。

例如,当输入5时,应该输出的三角形为:

1 3 6 10 15

2 5 9 14

4 8 13

7 12

11

输入描述:

输入正整数N(N不大于100)

输出描述:

输出一个N行的蛇形矩阵。

示例1

输入:

4

输出:

1 3 6 10
2 5 9
4 8
7

解题思路:

通过观察可知,行数和列数都等于输入的正整数n,且每次的数字填充都是从各个副对角线开始,而每条副对角线上元素的行号与列号相加是相等的,比如第二根副对角线的元素2和元素3,行号+列号都会等于1,再比如第四根副对角线上的元素7,8,9,10,其行号+列号都会等于3(二维数组下标从0开始计算)。并且,同一根副对角线上的元素是按照行号递减,列号递增的规律进行填充的,了解到这里,就可以写代码了,以下为代码实现:

#include <stdio.h>
#define     N    100
int main()
{
    int n,arr[N][N],i,j,m,cnt=1;
    scanf("%d",&n);
    for(m=0;m<n;m++)                    
    {
        for(i=n-1;i>=0;i--)            //行号从大到小递减
        {
            for(j=0;j<n;j++)           //列号从小到大递增
            {
                if(i+j==m)            //需要满足(行号i+列号j)==m,才能填入数字cnt
                {
                    arr[i][j]=cnt++;
                }
            }
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-i;j++)
        {
            printf("%d ",arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}
举报

相关推荐

0 条评论