描述
蛇形矩阵是由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;
}









