当前位置: 首页 > news >正文

一个蛇形填充n×n矩阵的算法

该程序实现了一个蛇形填充n×n矩阵的算法。通过定义方向变量d(0表示右上,2表示左下),交替进行对角线填充:当向右上方超出边界时转向左下方,反之亦然。填充从a[0][0]=1开始,依次递增至n²。最后通过printArr函数输出填充完成的矩阵。核心逻辑是通过判断边界条件动态调整填充方向,实现蛇形走位填充二维数组。该算法时间复杂度为O(n²),空间复杂度为O(n²)。

#include <stdio.h>
#include <math.h>#define M  1001
int a[M][M];void fun(int n){int k=1,i=0,j=0;int d =0;  //0右上角    2左下角 a[0][0]=k;while(k<=n*n){k++;if(d==0){ //右上角  i--,j++ i--,j++;if(j==n){ //超出右边了, i+=2,j--;d=2; //改方向 }else if(i<0){i++;d=2; //改方向 }a[i][j]=k;			continue;}if(d==2){//左下角 i++,j--;if(i==n){i--,j+=2;d=0;}else if(j<0){j++;d=0;}a[i][j]=k;			continue;}}
}printArr(int n){int i,j;for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%d ",a[i][j]);puts("");}
}int main() {    int n;scanf("%d",&n);fun(n);printArr(n);return 0;
}

http://www.dtcms.com/a/548705.html

相关文章:

  • git index lockFile exists 问题
  • 一段音频/视频分离成人声与伴奏,Windows + Anaconda 快速跑通 Spleeter(离线可用)
  • RecyclerView设置边缘渐变失效
  • 网站续费模版徐州建设工程网上交易平台
  • [系统架构设计师]云原生架构
  • spec-kit深度解析:AI驱动的规范驱动开发(SDD)的架构、哲学与实践启示
  • 怎么学做网站哈尔滨十大广告公司
  • AI应用开发
  • Rust 中精确大小迭代器(ExactSizeIterator)的深度解析与实践
  • 培训/课程预约小程序开发-提升教育机构的管理效率和用户体验
  • 【Unity基础详解】(3)Unity核心类:GameObject
  • oj题 ——— 单链表oj题
  • 企业网站建设推广含义网站建设开发上线流程
  • Unity-AutoHand插件手势跟踪响应研究
  • 数据结构——三十三、Dijkstra算法(王道408)
  • MQTTX:全能的 MQTT 客户端工具简化物联网开发
  • 抗体芯片技术:超越Western Blot的高通量蛋白分析方案
  • 佛山公司网站建设价格企业查询平台
  • k8s介绍+k8s部署
  • 【H5工具】一个简约高级感渐变海报H5设计工具
  • 未来之窗昭和仙君(四十五)时钟应用场景——东方仙盟筑基期
  • TTL转485电路
  • Milvus知识
  • 实战:动态线程池应对短视频转码百倍流量洪峰
  • 第一部分:一般性理論(注定的概率論)第一章引入
  • 合肥大型网站设计互联网营销师怎么做
  • 建设公众号网站评分标准细则网站的站内结构锚文本是如何做的
  • 裸金属 vs. 虚拟化 GPU 服务器:AI 训练与推理应该怎么选
  • 做网站的语言建设一下网站要求提供源码
  • 金仓替换MongoDB:金融交易数据一致性新解