Songdengdeng~ 2021-09-03 23:51 采纳率: 87.5%
浏览 33
已结题

来回答点关注😊。下边这个问题对小bai的我究极难度,求解

img

img


题目如上边那副图,我的思考为下图,想将框框里边打造成为一个函数,但是这个函数里边得输出a[i]
呀,emmm,不会啦。又菜又爱玩罢了~
求解求解
或者是针对蛇形的其他方法,提供一点点思路即可,感谢感谢

  • 写回答

1条回答 默认 最新

  • aabyte 2021-09-04 02:56
    关注

    解决方案如下,思路写在注释里了,有帮助望采纳,谢谢!

    #include <stdio.h>
    #include <stdlib.h>
    int main(void)
    {
        int n = 0, i = 0, j = 0;
        scanf("%d", &n); //输入行列数
        //动态申请n行n列的二维数组,如果觉得麻烦根据题目要求申请足够大的也行
        int** num = (int**)malloc(sizeof(int*) * n);
        for (i = 0; i < n; i++)
            num[i] = (int*)malloc(sizeof(int) * n);
        //我们接下来的思路就是一圈一圈往中心填数字,数字是逐渐递增的,用count来表示,初始值为1,结束时为n*n
        int start = 0, finish = n - 1, count = 1; //start指当前行列最小值,finish指当前行列最大值
    
        while (count <= n * n)
        {
            //找到题目里1开始的位置,我们开始,根据count增加的方向走
            //每一圈的规律都是一样的,结束的标志就是count达到了指定的大小
            for (i = start; i <= finish; i++) //从上到下,行增列不变
                num[i][finish] = count++;
            for (j = finish - 1; j >= start; j--) //从右往左,列减行不变
                num[finish][j] = count++;
            for (i = finish - 1; i >= start + 1; i--) //从下向上,行减列不变
                num[i][start] = count++;
            for (j = start; j <= finish - 1; j++) //从左向右,列增行不变
                num[start][j] = count++;
            start++; finish--; //缩圈,行列的最小值加1,最大值减1
        }
        for (i = 0; i < n; i++) //输出
        {
            for (j = 0; j < n; j++)
                printf("%-5d", num[i][j]);
            printf("\n");
        }
    
        //最后记得释放掉申请的内存
        for (i = 0; i < n; i++)
            free(num[i]);
        free(num);
        return 0;
    }
    

    img

    img

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

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 9月4日
  • 已采纳回答 9月4日
  • 创建了问题 9月3日

悬赏问题

  • ¥15 echarts动画效果失效的问题。官网下载的例子。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加