想起来一道做过两次的竞赛题,明明之后重写了标程第二次还是想不起来怎么写了,愣是连续两次打表过(捂脸

题目: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;
}

顺时针螺旋打印二维数组相关推荐

  1. 螺旋打印二维数组(字节三面)

    给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 输入: [[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ] ] 输出: ...

  2. python螺旋打印二维数组_Python使用迭代器打印螺旋矩阵的思路及代码示例

    import itertools def spiral(n,m): _status = itertools.cycle(['right','down','left','up'])#用于状态周期性的切换 ...

  3. 算法笔记-螺旋输出二维数组

    算法笔记-螺旋输出二维数组 1.思路:二维数组看做一个坐标,遍历者当成一个人,那么我们定义这个人的位置,以及当前面朝的方向,还有这个人转向次数.初始位置,人在(x,y)=(0,0)处,面向右方,右方的 ...

  4. 【C 语言】数组 ( 验证二维数组内存是线性的 | 打印二维数组 | 以一维数组方式打印二维数组 | 打印二维数组值和地址 )

    文章目录 一.验证二维数组内存是线性的 1.打印二维数组 2.以一维数组方式打印二维数组 3.打印二维数组值和地址 二.完整代码示例 一.验证二维数组内存是线性的 验证二维数组内存是线性的 : 验证方 ...

  5. js-练习题-循环打印二维数组-二维数组求和-个人所得税

    循环打印二维数组 <script>var arr=new Array();for(i=0;i<5;i++){arr[i]=new Array();for(j=0;j<8;j++ ...

  6. 打印二维数组的三种方法

    方法一:常规法 老老实实传二维数组. void print1(int arr[3][5], int row, int col) {int i = 0;int j = 0;for (i = 0; i & ...

  7. java打印二维数组_Java中如何打印二维数组

    在Java中如何打印二维数组 1.直接使用数组自带的toString------ 打印出数组的地址 2.使用Arrays.toString()---------- 打印每个二维数组的地址 3.使用Ar ...

  8. 顺时针打印二维数组C语言递归,按顺时针打印矩阵

    存在二种解题思路: 一种是递归解法,一种是层层递进解法 图解递归解法 如图所示, 一个5*5的矩阵 先打印最外层的圈, 然后剩余最里层3*3的矩阵, 如图. 将3*3的矩阵继续打印最外层,思路与打印最 ...

  9. 漫画:如何螺旋遍历二维数组?

    作者 | 小灰 来源 | 程序员小灰(ID:chengxuyuanxiaohui)  第二天   什么意思呢?我们来举个例子,给定下面这样一个二维数组: 我们需要从左上角的元素1开始,按照顺时针进行螺 ...

最新文章

  1. day2:作业 购物车程序及升级版本
  2. .NET平台相关概念(简单了解)
  3. 小程序当中的文件类型,组织结构,配置,知识点等
  4. ACM10.14题解
  5. win7下卸载linux系统(不用windows光盘)
  6. 三倍快乐!推荐跨Win/Mac/Linux平台免费优质软件
  7. 知网html阅读怎么复制粘贴,网页文字不能复制粘贴怎么解决 网页文字不能复制粘贴的解决办法(推荐)...
  8. TFP与TFTP的联系与区别
  9. linux 下 格式化u盘 并分区 为fat32文件系统
  10. (八)《跟我一起写Makefile》之使用函数
  11. 字长模型LP64,ILP64,LLP64,ILP32,LP32
  12. linux 动画软件,免费开源的 2D 动画软件
  13. 市场营销学【最精典】案例分析
  14. IDEA安装 激活 基本使用
  15. java 转byte字符串,Java 字符串与byte之间的相互转换
  16. HBase是什么?为什么要使用HBase?
  17. CSDN微软俱乐部成立
  18. 有道难题2010有道谜题标准答案
  19. 张钹院士:第三代人工智能的特点、发展现状及未来趋势
  20. wampserver mysql忘记密码_WampServer修改MySQL密码

热门文章

  1. iOS仿微信聊天输入框、评论输入框
  2. python读取文件需要的异常处理_Python基础:文件的简单读取和操作以及异常处理...
  3. 间述i计算机主要应用领域,电子科技大学17年11月《计算机导论》作业考核试题题目...
  4. 苏州新导关于机房RFID资产管理解决方案案例分析
  5. 自学Python有哪些不错的书籍推荐?
  6. 怎样访问远程服务器文件夹,访问远程服务器的共享文件夹
  7. mysql 查询各个时间段的数据
  8. 后台启动zookeeper
  9. C++ 两个矩阵的乘法
  10. 亲身经历3家1000人互联网公司,分享 25 条潜规则!