顺时针螺旋打印二维数组
想起来一道做过两次的竞赛题,明明之后重写了标程第二次还是想不起来怎么写了,愣是连续两次打表过(捂脸
题目:1,2,3…n*n 的数字按照顺时针螺旋的形式打印成矩阵,如下:
输入数字2,则程序输出:
1 2
4 3
输入数字3,则程序输出:
1 2 3
8 9 4
7 6 5
输入数字4, 则程序输出:
1 2 3 4
12 13 14 5
11 16 15 6
10 9 8 7
思路:用递归的方式从外向内顺时针打印每一圈,模拟顺时针转动时x和y的坐标位置即可
代码:
#include<iostream>
using namespace std;int a[105][105];void fun(int n,int num,int x,int y)
{int i;a[x][y]=num++;if(n==0||n==1)return ;for(i=0;i<n-1;i++) //上 {y++;a[x][y]=num++;}for(i=0;i<n-1;i++) //右 {x++;a[x][y]=num++;} for(i=0;i<n-1;i++) //下 {y--;a[x][y]=num++;}for(i=0;i<n-2;i++) //左 {x--;a[x][y]=num++;}fun(n-2,num,x,y+1);
}int main()
{int n,i,j;cin>>n;fun(n,1,0,0);for(i=0;i<n;i++){for(j=0;j<n;j++){if(j)cout<<" ";cout<<a[i][j];}cout<<endl;}return 0;
}
顺时针螺旋打印二维数组相关推荐
- 螺旋打印二维数组(字节三面)
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 输入: [[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ] ] 输出: ...
- python螺旋打印二维数组_Python使用迭代器打印螺旋矩阵的思路及代码示例
import itertools def spiral(n,m): _status = itertools.cycle(['right','down','left','up'])#用于状态周期性的切换 ...
- 算法笔记-螺旋输出二维数组
算法笔记-螺旋输出二维数组 1.思路:二维数组看做一个坐标,遍历者当成一个人,那么我们定义这个人的位置,以及当前面朝的方向,还有这个人转向次数.初始位置,人在(x,y)=(0,0)处,面向右方,右方的 ...
- 【C 语言】数组 ( 验证二维数组内存是线性的 | 打印二维数组 | 以一维数组方式打印二维数组 | 打印二维数组值和地址 )
文章目录 一.验证二维数组内存是线性的 1.打印二维数组 2.以一维数组方式打印二维数组 3.打印二维数组值和地址 二.完整代码示例 一.验证二维数组内存是线性的 验证二维数组内存是线性的 : 验证方 ...
- js-练习题-循环打印二维数组-二维数组求和-个人所得税
循环打印二维数组 <script>var arr=new Array();for(i=0;i<5;i++){arr[i]=new Array();for(j=0;j<8;j++ ...
- 打印二维数组的三种方法
方法一:常规法 老老实实传二维数组. void print1(int arr[3][5], int row, int col) {int i = 0;int j = 0;for (i = 0; i & ...
- java打印二维数组_Java中如何打印二维数组
在Java中如何打印二维数组 1.直接使用数组自带的toString------ 打印出数组的地址 2.使用Arrays.toString()---------- 打印每个二维数组的地址 3.使用Ar ...
- 顺时针打印二维数组C语言递归,按顺时针打印矩阵
存在二种解题思路: 一种是递归解法,一种是层层递进解法 图解递归解法 如图所示, 一个5*5的矩阵 先打印最外层的圈, 然后剩余最里层3*3的矩阵, 如图. 将3*3的矩阵继续打印最外层,思路与打印最 ...
- 漫画:如何螺旋遍历二维数组?
作者 | 小灰 来源 | 程序员小灰(ID:chengxuyuanxiaohui) 第二天 什么意思呢?我们来举个例子,给定下面这样一个二维数组: 我们需要从左上角的元素1开始,按照顺时针进行螺 ...
最新文章
- day2:作业 购物车程序及升级版本
- .NET平台相关概念(简单了解)
- 小程序当中的文件类型,组织结构,配置,知识点等
- ACM10.14题解
- win7下卸载linux系统(不用windows光盘)
- 三倍快乐!推荐跨Win/Mac/Linux平台免费优质软件
- 知网html阅读怎么复制粘贴,网页文字不能复制粘贴怎么解决 网页文字不能复制粘贴的解决办法(推荐)...
- TFP与TFTP的联系与区别
- linux 下 格式化u盘 并分区 为fat32文件系统
- (八)《跟我一起写Makefile》之使用函数
- 字长模型LP64,ILP64,LLP64,ILP32,LP32
- linux 动画软件,免费开源的 2D 动画软件
- 市场营销学【最精典】案例分析
- IDEA安装 激活 基本使用
- java 转byte字符串,Java 字符串与byte之间的相互转换
- HBase是什么?为什么要使用HBase?
- CSDN微软俱乐部成立
- 有道难题2010有道谜题标准答案
- 张钹院士:第三代人工智能的特点、发展现状及未来趋势
- wampserver mysql忘记密码_WampServer修改MySQL密码
热门文章
- iOS仿微信聊天输入框、评论输入框
- python读取文件需要的异常处理_Python基础:文件的简单读取和操作以及异常处理...
- 间述i计算机主要应用领域,电子科技大学17年11月《计算机导论》作业考核试题题目...
- 苏州新导关于机房RFID资产管理解决方案案例分析
- 自学Python有哪些不错的书籍推荐?
- 怎样访问远程服务器文件夹,访问远程服务器的共享文件夹
- mysql 查询各个时间段的数据
- 后台启动zookeeper
- C++ 两个矩阵的乘法
- 亲身经历3家1000人互联网公司,分享 25 条潜规则!