首页 > 代码库 > 蛇形矩阵

蛇形矩阵

技术分享

如上图所示,是一个4*4的蛇形矩阵

算法思路

由图可观察到该矩阵可分为上三角和下三角。每个三角要根据蛇形的奇偶行进行计数。

算法代码

 

#include <stdio.h>
int main()
{
    int a[10][10];
    int n;
    printf("Input n:");
    scanf("%d",&n);
    int i=0,j=0,k=0;
    int count=1;
    for(i=0;i<n;i++)/*上三角 i代表是蛇形的奇偶行*/
    {
        k=0;
        for(j=i;j>=0;j--)
        {
            if(i%2 == 0)/*蛇形偶数行的操作 j代表下标行减少*/
            {
                a[j][k]=count;
                count++;
                k++;/*k代表下标列增加*/
            }
            else/*蛇形奇数行的操作 j代表下标列jian少*/
            {
                a[k][j]=count;
                count++;
                k++;/*k代表下标行增加*/
            }
        }
    }

    for(i=n-1;i>0;i--)/*下三角*/
    {
        k=n-1;
        for(j=n-i;j<n;j++)
        {
            if(i%2 == 0)
            {
                a[j][k] = count;
                count++;
                k--;
            }
            else
            {
                a[k][j] = count;
                count++;
                k--;
            }
        }
    }
    for(i=0;i<n;i++)/*循环输出结果*/
    {
        for(j=0;j<n;j++)
        {
            printf("%d\t",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

 

运行结果

技术分享


感悟

一开始做这道题无从下手,然后慢慢找规律,会发现其实也不是太难。所以啊,好好耐心看题才是关键啊!

 

蛇形矩阵