螺旋矩阵(c语言实现)

螺旋矩阵(c语言实现)腾讯 2016 年实习生笔试题蛇形矩阵 也叫螺旋矩阵 指一个呈螺旋状的矩阵 它的数字由第一行开始到右边不断变大 向下变大 向左变大 向上变大 如此循环 思想就是 螺旋 有四个方向 从左到右 从上到下 从右到左 从下到上 对于第一步 要先加上 c c 从 0 开始 每次执行完一圈 就加 1 第一个方向 从左到右 从 c c 开始 从左到右 行 i 不变 列 j 从 c 一直加到 n c 1

腾讯2016年实习生笔试题

蛇形矩阵,也叫螺旋矩阵,指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,
向左变大,向上变大,如此循环。

#include

using namespace std;

const int NMAX= 100;
int n;
/*
思想就是:
螺旋,有四个方向,从左到右,从上到下,从右到左,从下到上。
对于第一步,要先加上c,c从0开始,每次执行完一圈,就加1
第一个方向,从左到右,从(c,c)开始,从左到右,行i不变,列j从c一直加到n-c-1
第二个方向,从上到下,因为列j在上一步加的多了一个,需要对j进行j–,对于i也要加1,因为第i行的所有数字,在上一步都完成了。
这一步,是列j不变,行i从上一步的i加1 ,一直加到n-c-1
第三个方向,从右到左,因为行i在上一步加多了一步,需要对i进行i–。这一步,需要行i不变,列j需要j–,直到c。
第四个方向,从下到上,因为列j在上一步减多了一步,需要对j进行j++,这一步,需要列j不变,行i一直i–,直到c+1.不能到c,因为不能到达第c行,
第c行在第一个方向上已经赋值过了。
*/
void getluoxuan1(int arrays[NMAX][NMAX])
{
//核心算法:
cout<<"从外到内螺旋,且数字从小到大,从矩阵的左上角开始从数字1开始螺旋:"<
int c=0,i,j;

int z = n*n;
int ou=1;
while(ou<=z)
{

i=0;
j=0;
for(i+=c,j+=c;j

{

if(ou>z) break;
arrays[i][j] = ou++;
}
for(j–,i++;i

{

if(ou>z) break;
arrays[i][j] = ou++;
}
for(i–,j–;j>=c;j–)//从右到左
{
if(ou>z) break;
arrays[i][j] = ou++;
}
for(j++,i–;i>=c+1;i–)//从下到上
{
if(ou>z)  break;
arrays[i][j] = ou++;
}
c++;

}

}

void getluoxuan11(int arrays[NMAX][NMAX])
{
cout<<"从矩阵的左上角开始从数字的最大值开始螺旋"<
int c=0,i,j;

int z = n*n;
int ou=z;
while(ou>=1)
{

i=0;
j=0;
for(i+=c,j+=c;j

{

if(ou>z) break;
arrays[i][j] = ou–;
}
for(j–,i++;i

{

if(ou>z) break;
arrays[i][j] = ou–;
}
for(i–,j–;j>=c;j–)//从右到左
{
if(ou>z) break;
arrays[i][j] = ou–;
}
for(j++,i–;i>=c+1;i–)//从下到上
{
if(ou>z)  break;
arrays[i][j] = ou–;
}
c++;

}

}

void getluoxuan2(int arrays[NMAX][NMAX])
{
cout<<"从矩阵的右上角开始从数字1开始螺旋:"<
int c=0,i,j;

int z = n*n;
int ou=1;
while(ou<=z)
{

i=0;
j=0;
for(i=c,j=n-c-1;j>=c;j–)  //从右到左
{
if(ou>z) break;
arrays[i][j] = ou++;
}
for(j++,i++;i

{

if(ou>z) break;
arrays[i][j] = ou++;
}
for(i–,j++;j

{

if(ou>z) break;
arrays[i][j] = ou++;
}
for(j–,i–;i>=c+1;i–)//从下到上
{
if(ou>z)  break;
arrays[i][j] = ou++;
}
c++;

}
}

void getluoxuan22(int arrays[NMAX][NMAX])
{
cout<<"从矩阵的右上角开始从矩阵的最大值开始螺旋:"<
int c=0,i,j;

int z = n*n;
int ou=z;
while(ou>=1)
{

i=0;
j=0;
for(i=c,j=n-c-1;j>=c;j–)  //从右到左
{
if(ou>z) break;
arrays[i][j] = ou–;
}
for(j++,i++;i

{

if(ou>z) break;
arrays[i][j] = ou–;
}
for(i–,j++;j

{

if(ou>z) break;
arrays[i][j] = ou–;
}
for(j–,i–;i>=c+1;i–)//从下到上
{
if(ou>z)  break;
arrays[i][j] = ou–;
}
c++;

}
}

void diaplay(int arrays[NMAX][NMAX])
{
int i,j;
for(i=0;i

{

for(j=0;j

printf(“%5d”,arrays[i][j]);

//cout<
cout<
}

}
int main()
{
int arrays[NMAX][NMAX];
cin>>n;
int i,j;
for(i=0;i

for(j=0;j

arrays[i][j] = 0;

cout<<"从外到内螺旋,且数字从小到大,从矩阵的左上角开始从数字1开始螺旋:"<
getluoxuan1(arrays);

diaplay(arrays);

cout<
cout<<"从矩阵的右上角开始从数字1开始螺旋:"<
getluoxuan2(arrays);

diaplay(arrays);

cout<
cout<<"从矩阵的左上角开始从数字的最大值开始螺旋"<
getluoxuan11(arrays);

diaplay(arrays);

cout<
cout<<"从矩阵的右上角开始从矩阵的最大值开始螺旋:"<
getluoxuan22(arrays);

diaplay(arrays);

}

4阶螺旋矩阵运行结果:

螺旋矩阵(c语言实现)螺旋矩阵(c语言实现)

5阶螺旋矩阵运行结果:

螺旋矩阵(c语言实现)
























































































































































































































版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/207339.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月19日 下午2:02
下一篇 2026年3月19日 下午2:03


相关推荐

  • 如何在Pycharm中安装 pygame?

    如何在Pycharm中安装 pygame?今天好不容易啃书到项目实践过程 终于可以做一款小游戏了 这对我这个 Python 编程小白来说 无疑是自己一直想要去实现的 正准备兴致勃勃的准备撸代码时 就开始碰壁了 因为在安装 pygame 我按照书中步骤来时 却永远安不上 可能是书的问题也可能是我自己哪部分搞错了 于是去搜了一下百度 虽然有很多办法 但无一都很复杂 写了一大堆 最终在我自我摸索下 终于搞好了 现在分享一下我的下载过程 超级简单 1 首先打开 pycharm 再点击 Terminal 终端 在终端输入 pipinstallpy 即可

    2026年3月18日
    2
  • UML状态图

    UML状态图状态图 Statechart nbsp digram 是系统分析的一种常用工具 系统分析员在对系统建模时 最先考虑的不是基于活动之间的控制流 而是基于状态之间的控制流 因为系统中对象的状态变化最易被发现和理解 nbsp nbsp nbsp nbsp nbsp nbsp 状态机 nbsp nbsp nbsp nbsp nbsp nbsp 要想画出状态图 首先得了解状态机 状态机是展示状态与状态转换的图 nbsp nbsp nbsp nbsp nbsp nbsp 状态图 nbsp nbsp nbsp nbsp nbsp nbsp 一个状态图表示一个状态机 主要用于表现从一个状

    2026年3月17日
    2
  • 2017 上海车牌(沪牌)标书购买攻略

    2017 上海车牌(沪牌)标书购买攻略本文介绍 上海车牌上海牌照标书购买的攻略,本文会一直跟随政策而更新, 希望对大家有所帮助本文2017年4月更新阅读目录第一步:确认自己是否有资格购买标书一定要确认自己的

    2022年7月3日
    49
  • mysql shell创建数据库_mysql怎么建立数据库

    mysql shell创建数据库_mysql怎么建立数据库#!/bin/shSHELL_NAME=GetTabStript.sh/bin/rm-fCreateTable.sql/bin/rm-ftmp.sql##获取数据库用户名、密码、实例,属主,表名称列表信息;执行格式如下:##指定表:shGetTabStript.sh”dbrwdadm””dbrwdadm””chnrwd””DBRWDADM””DCUSTMSGSCHNKPI”…

    2025年10月7日
    10
  • pandas at loc_pandas str

    pandas at loc_pandas strpandas中.loc和.iloc以及.at和.iat的区别显示索引和隐式索引显示索引和隐式索引importpandasaspddf=pd.DataFrame({‘姓名’:[‘张三’,‘李四’,‘王五’],‘成绩’:[85,59,76]})#传入冒号‘:’,表示所有行或者列#显示索引:loc,第一个参数为index切片,第二个为columnsdf.loc[2] #index为…

    2022年8月30日
    7
  • 小技巧——防止系统出问题文件丢失

    为什么要进行数据备份,怕有一天数据你真的找不回来的时候,还有后悔药可以吃!有时候数据在你手上的时候你可能觉得它的价值不是很高,但是一旦你失去,你就会发现,它的重要性远远超过了你的想象!不犯错就不会成长,这次我一定要记住,让这种错误以后再也不要犯!重要的资料不要放到c盘!!! 不要放到桌面!!! 重要的资料不要放到c盘!!! 不要放到桌面!!!

    2022年2月25日
    46

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号