news 2026/7/7 18:27:15

C++编程中关于螺旋数组的解题思路

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++编程中关于螺旋数组的解题思路

对于给定的一个输入变量n,要求绘出一个n*n的二维数组,要求从数字1开始,从左到右,从上到下,进行螺旋式的填充,每填充一个数字,变量值+1。

这类问题基本上要考虑四个方向,用0,1,2,3分别表示四个方向,方向每变化一个,都要加1,并且和4求余数%4,用一个变量计数,从1-n*n结束,每次加一,遇到遍历过的位置或者边界就改变方向,直到输出最后一个数为止。

#include <stdio.h> using namespace std; int main() { int n; printf("请输入矩阵的大小 n: "); scanf("%d", &n); // 方向:0-右,1-下,2-左,3-上 int directions[4][2] = {{0, 1}, {1, 0}, {0, -1}, {-1, 0}}; int a[10000]; // 存储螺旋数组的一维表示 int x = 0, y = 0; // 当前位置 int dir = 0; // 当前方向:初始向右 int num = 1; // 当前要填入的数字 // 初始化数组为0(用于标记边界) for (int i = 0; i < n * n; i++) { a[i] = 0; } // 填充螺旋数组 for (int i = 0; i < n * n; i++) { a[x * n + y] = num++; // 将数字存入一维数组 // 计算下一个位置 int next_x = x + directions[dir][0]; int next_y = y + directions[dir][1]; // 检查是否需要改变方向: // 下一个位置超出边界,或者已经填过数字 if (next_x < 0 || next_x >= n || next_y < 0 || next_y >= n || a[next_x * n + next_y] != 0) { // 改变方向:右→下→左→上→右... dir = (dir + 1) % 4; next_x = x + directions[dir][0]; next_y = y + directions[dir][1]; } // 移动到下一个位置 x = next_x; y = next_y; } // 输出结果(按矩阵形式输出) printf("螺旋矩阵:\n"); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { printf("%3d ", a[i * n + j]); } printf("\n"); } return 0; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 16:19:24

复杂网络与模糊逻辑粒子群优化毕业论文【附代码】

✅ 博主简介&#xff1a;擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导&#xff0c;毕业论文、期刊论文经验交流。✅ 具体问题可以私信或扫描文章底部二维码。1) 针对粒子群算法在复杂优化问题上易早熟收敛的问题&#xff0c;提出了一种基于无标度网络拓扑…

作者头像 李华
网站建设 2026/7/3 17:25:13

【毕业设计】基于springboot高校工作室管理系统高等教育机构的工作室管理(源码+文档+远程调试,全bao定制等)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/7/6 0:43:56

uni-app插件市场深度ROI分析:如何用组件化降低70%开发成本

uni-app插件市场深度ROI分析&#xff1a;如何用组件化降低70%开发成本 【免费下载链接】uni-app A cross-platform framework using Vue.js 项目地址: https://gitcode.com/dcloud/uni-app 在当今竞争激烈的移动应用市场中&#xff0c;技术决策者面临的最大挑战之一是如…

作者头像 李华
网站建设 2026/7/3 19:21:44

5、汇编语言中的数学与位操作

汇编语言中的数学与位操作 1. 整数加法 在汇编语言里,整数加法使用 add 指令来实现。该指令有两个操作数,分别是目标操作数和源操作数,它会把源操作数的内容与目标操作数的内容相加,然后将结果存于目标操作数中。 源操作数可以是32位的立即数(常量)、内存引用或者寄存…

作者头像 李华
网站建设 2026/7/7 5:37:59

靠谱的PC耐力板公司有哪些

探寻靠谱PC耐力板公司&#xff1a;聚焦百特威新材料在当今的建筑、工业等众多领域&#xff0c;PC耐力板凭借其优异性能得到了广泛应用&#xff0c;但市场上PC耐力板公司众多&#xff0c;质量参差不齐&#xff0c;如何挑选靠谱的公司成为了一个关键问题。下面将对行业进行分析&a…

作者头像 李华
网站建设 2026/7/7 8:32:08

深入解析C#方法:从基础到高级应用

第六次一&#xff0c;关于方法1&#xff0c;方法&#xff1a;把一些相关的代码封装在一个代码块里&#xff0c;可以给代码块添加一个名称&#xff0c;这个名称就是方法&#xff0c;可以通过调用这个方法名实现功能&#xff0c;方法可以重复用&#xff0c;减少代码重复率2&#…

作者头像 李华