【C/C++】C语言实现蛇形矩阵

目录

    • 题目描述
    • 输入描述:
    • 输出描述:
    • 示例
    • 思路
    • 代码

题目描述

给你一个整数n,输出n∗n的蛇形矩阵。

输入描述:

输入一行,包含一个整数n

输出描述:

输出n行,每行包含n个正整数,通过空格分隔。
1<=n<=1000

示例

输入

4

输出

1 2 6 7
3 5 8 13
4 9 12 14
10 11 15 16

思路

在这里插入图片描述

很明显,可以通过二维数组的行(i)和列(j)来控制移动方向,移动方向无非两种:向右上(i--;j++)和向左下(i++;j--)。
定义flag控制方向:flag = 0 ,向右上();flag = 1 ,向左下()。

当然要考虑边界情况。
向右上时可能会触顶也可能会触到右端
触顶端,可以通过i++;flag = 1使它回到下一个位置;
触右端,通过j--; i += 2;flag = 1使它恢复到下一个位置;

同理,
向左下时可能会触底也可能会触到左端
触底端,可以通过i--; j += 2; flag = 0;使它回到下一个位置;
触左端,通过j++; flag = 0;使它到下一个位置;

代码

#include<stdio.h>//蛇形矩阵遍历赋值
void Serpentine_array(int (*a)[50],int n) {int count = 1;int flag = 0;//决定方向int i = 0, j = 0;while (!(n-1 == i && n-1 == j)) {if (i >= 0 && i < n && j >= 0 && j < n){*(a[i] + j) = count;count++;if (flag == 0) { i--; j++; }else { i++; j--; }}if (i < 0 && j!=n) { i++; flag = 1; }//顶else if (j < 0 && i!=n) { j++; flag = 0; }//左else if (n == i) { i--; j += 2; flag = 0; }//底else if (n == j) { j--; i += 2; flag = 1; }//右}*(a[n - 1] + n - 1) = count;
}
//输出矩阵
void print(int(*a)[50], int n) {for (int i = 0; i < n; i++) {int j;for (j = 0; j < n - 1; j++) {printf("%d ", *(a[i] + j));}printf("%d\n", *(a[i] + j));}
}int main()
{int a[50][50],n;scanf("%d",&n);Serpentine_array(a, n);//蛇形矩阵遍历赋值print(a, n);//输出矩阵return 0;
}

如果本期文章对你有帮助,欢迎点赞+关注,支持一下,谢谢!

请添加图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/416297.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

iOS18 beta版本怎么回退至iOS17正式版本?

截止目前&#xff0c;苹果最近的iOS18的beta测试版本已经发了8版了&#xff0c;有许多朋友们都已升级提前尝鲜了&#xff0c;升级体验后许多果粉朋友们觉得有许多功能还是不够稳定&#xff0c;有些许bug&#xff0c;就想要降级&#xff0c;回退到iOS17的正式版&#xff0c;但又…

2024数博会技术成果回顾 | KPaaS助力企业数智化转型

2024年8月28日至30日&#xff0c;中国国际大数据产业博览会&#xff08;简称“数博会”&#xff09;在贵州省贵阳市隆重举行。本届数博会以“数智共生&#xff1a;开创数字经济高质量发展新未来”为主题&#xff0c;吸引了来自全球各地的400多家企业和2.1万余名嘉宾参与&#x…

AI自动生成PPT哪个软件好?如何自动生成专业级PPT?

新学期伊始&#xff0c;准备开学演讲稿的你是否还在为制作PPT而烦恼&#xff1f;别担心&#xff0c;现在有了AI的帮助&#xff0c;生成专业且吸引人的PPT变得轻而易举。 本文将为你揭秘4种高效的AI自动生成PPT的方法&#xff0c;让你在新学期的演讲中脱颖而出。无论是简洁明了…

Python | Leetcode Python题解之第391题完美矩形

题目&#xff1a; 题解&#xff1a; class Solution:def isRectangleCover(self, rectangles: List[List[int]]) -> bool:area, minX, minY, maxX, maxY 0, rectangles[0][0], rectangles[0][1], rectangles[0][2], rectangles[0][3]cnt defaultdict(int)for rect in rec…

glsl着色器学习 (十二)平移

平移和旋转、缩放是一样的&#xff0c;替换成平移矩阵即可&#xff1b; // 创建一个单位矩阵 const translateYMatrix mat4.create();// 沿着Y轴向下平移1个单位 mat4.fromTranslation(translateYMatrix, [0, -1, 0]);// 设置矩阵 gl.uniformMatrix4fv(matrixUniformLocation…

Linux进程状态 僵尸进程 孤儿进程

进程状态 R (running) Linux 的运行状态(循环空语句) S (sleeping) 阻塞状态 称为浅度睡眠(可以被唤醒)死循环打印语句时等待输入时使用 sleep 函数时 D (disk sleep) 也是一种阻塞状态&#xff0c;称为深度睡眠进程在等待磁盘写入完毕期间&#xff0c;这个进程不能被任何人杀…

2157. 优秀的拆分(power)

代码 #include<bits/stdc.h> using namespace std; int a[10001]; int main() {int n,t1,k0;bool flagfalse;cin>>n;if(n%21) {cout<<-1;return 0;}while(n>0){if(n%21){k;a[k]t; }nn/2;tt*2;}if(k>1) {flagtrue;for(int ik;i>1;i--)cout<&l…

oracle 数据库 day0823

ok了家人们&#xff0c;今天学习了orcle的基本用法&#xff0c;一日不见&#xff0c;如隔三秋啊&#xff0c; 一.多表联合查询 和之前学习的MySQL数据库一样的用法&#xff0c; 1.1 笛卡尔积查询 SELECT * FROM A表,B表 查询员工表和部门表 select * from emp e, dept d; e…

跨平台RTSP播放器之VLC Media Player还是SmartPlayer?

好多开发者纠结&#xff0c;RTSP流播放&#xff0c;到底是用开源的VLC Media Player还是大牛直播SDK的SmartPlayer&#xff1f;针对此&#xff0c;本文做个简单的技术探讨&#xff0c;方便开发者根据实际需要&#xff0c;做适合自己场景的选择&#xff1a; VLC Media Player …

flunet瞬态处理时均问题

fluent处理时均问题 最近遇到个同学&#xff0c;处理心脏跳动的时均问题&#xff0c;由于仅想取部分稳定时间段的时均数据&#xff0c;fluent的自动采样仅能对全部时间做处理&#xff0c;就存在问题了&#xff0c;网上看到两篇很详细的文章&#xff0c;记录下。 具体网址&…

截取pdf中的部分内容,又保证内容不失真,实现方式

文章目录 0.为什么需要截取pdf1.访问网站2.上传你需要截取的pdf文件3.选取区域下载 0.为什么需要截取pdf 如果直接截图工具截图的话&#xff0c;里面的文字和图片内容会出现失真的情况&#xff0c;但是我们希望pdf空白部分的内容不要&#xff0c;这个时候就需要截取pdf工具 1…

企业内部社区在企业起到什么作用?

企业内部社区是传播企业文化、促进员工互动和提升员工参与度的重要平台。通过企业内部社区&#xff0c;员工可以更好地理解和认同企业的核心价值观和文化理念&#xff0c;增强凝聚力和团队合作精神&#xff0c;进而提升企业的绩效和竞争力。企业内部社区有助于营造积极向上的工…

JVM学习《类加载运行-jvm内存模型》

目录 1.类加载过程 1.1 加载过程详解 1.2 类加载器 2.类加载器和双亲委派机制 3.JVM 对象创建与内存分配机制&#xff08;重要&#xff09; 3.1 对象的创建过程 3.2 对象的内存分配策略 4.JVM的内存模型 5.那些是GC Roots的对象有哪些&#xff1f; 1.类加载过程 通过类…

nacos适配人大金仓以及达梦-2.41

不想折腾直接查看源码 里面打包好了发行版本能直接使用 想折腾的具体看

白酒酿造:传统工艺与现代科技的整合

在千年的历史长河中&#xff0c;白酒酿造技艺如一颗璀璨的明珠&#xff0c;闪烁着中华文明的智慧光芒。如今&#xff0c;随着科技的飞速发展&#xff0c;传统酿造工艺与现代科技在这片古老的土地上交织碰撞&#xff0c;共同书写着白酒酿造的新篇章。豪迈白酒&#xff08;HOMANL…

分析源码学习c++(srs中http客户端)

文章目录 背景基础知识c标准库虚函数虚函数使用方法 虚析构函数 HTTP客户端使用方法TCP传输层分析使用方法结构分析连接函数读写函数 协议层分析初始化函数发送请求响应数据解析 背景 通过阅读源码&#xff0c;编写分析笔记来学习C是一种非常有效且深入的方法&#xff0c;能帮助…

Java导入包com.alibaba.fastjson2.JSONObject

com.alibaba.fastjson2.JSONObject 是阿里巴巴的 fastjson 库中的一个类&#xff0c;用于处理 JSON 数据。 这里提供一些常见的使用示例和可能的问题解决方法。 解决方案和示例代码: 创建 JSONObject 对象: import com.alibaba.fastjson2.JSONObject;JSONObject jsonObject …

Nginx: 使用KeepAlived配置实现虚IP在多服务器节点漂移及Nginx高可用原理

使用KeepAlived配置实现虚IP在多服务器节点漂移 1 &#xff09;环境准备 2台 linux , 一主一备 节点1&#xff1a;192.168.184.30 CentOS 7 Master节点2&#xff1a;192.168.184.40 CentOS 7 BackupVIP 192.168.184.50 安装 KeepAlived, $ yum install keepalived 注意&#x…

Jmeter、Python、Postman测试工具对比

一、JMeter 总结&#xff1a;适合对代码不敏感的使用人员&#xff0c;不会代码也可以完成接口自动化&#xff0c;设计框架。适合紧急迭代的项目。 JMeter接口测试的优势 小巧轻量级&#xff0c;并且开源免费&#xff0c;社区接受度高&#xff0c;比较容易入门支持多协议&…

MCU官方IDE软件安装及学习教程集合 — STM32CubeIDE(STM32)

简介 各MCU厂商为保证产品的市场地位以及用户体验&#xff0c;不断的完善自己的产品配套&#xff0c;搭建自己的开发生态&#xff0c;像国外ST公司&#xff0c;国内的GD&#xff08;兆易创新&#xff09;&#xff0c;AT&#xff08;雅特力&#xff09;等等。目前就开发生态而言…