m0_59603572 2021-07-02 00:39 采纳率: 66.7%
浏览 168
已采纳

c语言算法 蛇形矩阵

蛇形填数,给出N*N的矩阵,要求用程序填入下列蛇形排列形式得数(例如N=5)则形成
1 3 4 10 11
2 5 9 12 19
6 8 13 18 20
7 14 17 21 24
15 16 22 23 25

  • 写回答

1条回答 默认 最新

  • 关注
    /*  编写者:Zero       编写时间:2018年  */
    #include<stdio.h>
    #define N 100
    void ZigzagMatrix(int a[][N], int n);
    int main()
    {
        int a[N][N] = {0};
        int n;
        a[0][0] = 1;
        printf("Input n:\n");
        if(!scanf("%d",&n) || n<=0 || n >100)   /* 清除非法输入 */
        {
            printf("Input error!");
        }
        else
        {
            ZigzagMatrix(a, n);    /* 调用输出蛇形矩阵的函数 */
        }
        return 0;
    }
    
    void ZigzagMatrix(int a[][N], int n)  /* 函数功能:输出蛇形矩阵 */
    {
        int i, j, k, m;
        for(m = 1; m <= 2*n - 3; m++)  //上三角有 n-1 条斜线(把最长的对角线算到上三角上),下三角有 n-2 条,共2n-3
        {
            if(m<=n-1)   /* 循环打印上三角 */
            {
                k = m;
                for(i = 0; i <= k; i++)
                {
                    if(k%2)    /* k为偶数的情况 */
                    {
                        if(i == 0)      /* 每个对角线开始打印的第一个和上一个衔接 */
                            a[i][k-i] = a[i][k-1] + 1;
                        else            /*  除了第一个,对角线的元素等于上一个元素加一1*/
                            a[i][k-i] = a[i-1][k-i+1] + 1;
                    }
                    else           /* 与k为偶数的情况类似 */
                    {
                        if( i == 0)
                            a[k-i][i] = a[k-1][i] + 1;
                        else
                            a[k-i][i] = a[k-i+1][i-1] + 1;
                    }
                }
            }
            else  /* 中心对称规律打印下三角 */
            {
                for(i = n-1; i >= 0; i--)
                {
                    for(j = n-i; j < n; j++)
                        a[i][j] = n*n + 1 - a[n-1-i][n-1-j];
                }
            }
    
        }
        for(i = 0; i < n ;i++)     /* 输出蛇形矩阵 */
        {
            for(j = 0; j < n; j++)
            {
                printf("%4d",a[j][i]);
            }
            printf("\n");
        }
    }
    
    

    img

    展开全部

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

    如果有帮助请点一下我回答右上方的采纳,谢谢!以后有什么问题可以互相交流。

    回复
    CWC_21 回复 CSDN专家-深度学习进阶 2021-11-10 10:30

    能不能稍微解释一下,看不懂。。。。。

    回复
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部