第一种

**相当于从一个点慢慢遍历,每遍历一个点就设为一个负数或大数(不与)题目的数据重复就好**
#include<iostream>
#include<algorithm>using namespace std;int a[300][300];int main()
{int n, m;while (cin >> m >> n){for (int i = 0; i < m; i++)for (int j = 0; j < n; j++)cin >> a[i][j];if (m == 1)for (int i = 0; i < n; i++)cout << a[0][i];{int count = n*m;int x = -1, y = -1;while (count){for (x = x + 1, y = y + 1; y < m && a[y][x]!=0; y++){cout << a[y][x];count--;a[y][x] = 0;}for (x = x + 1, y = y - 1; x < n && a[y][x]!=0; x++){cout << a[y][x];count--;a[y][x] = 0;}for (x = x - 1, y = y - 1; y >= 0 && a[y][x]!=0; y--){cout << a[y][x];count--;a[y][x] = 0;}for (x = x - 1, y = y + 1; x >= 0 && a[y][x]!=0; x--){cout << a[y][x];count--;a[y][x] = 0;}}}}return 0;
}

不过有一个缺点是,行列过大时会超时

## 第二种
**我们开始设置四个变量用这四个变量的变化来输出,**

代码如下:(内有解释)

#include <iostream>
#include <string>
#include<algorithm>
using namespace std;int main()
{int m, n;int a[101][101];while (cin >> n >> m){for (int i = 0; i < n; i++){for (int j = 0; j < m; j++)cin >> a[i][j];}if (n == 1)//特判一下{for (int i = 0; i < m; i++)cout << a[0][i];}else if (m == 1){for (int i = 0; i < n; i++)cout << a[i][0];}else{int z = 0, y = m - 1;//列int s = 0, x = n - 1;//行while (1)//死循环,循环中有结束的条件{for (int i = s; i <= x; i++){cout << a[i][z];}z++;if (z > y || s > x)//当你的小的列数与行数,比大的大时说明就可以结束了,不清楚的可以写写看break;for (int i = z; i<= y; i++){cout << a[x][i];}x--;if (z > y || s > x)break;for (int i = x; i >= s; i--){cout << a[i][y];}y--;if (z > y || s > x)break;for (int i = y; i >= z; i--){cout << a[s][i];}s++;if (z > y || s > x)break;}}cout << endl;}return 0;
}

第三种

通用方法,在应对往四个方向移动时可以设置方向数组

逆时针:
dx[4]={1,0,-1,0};
dy[4]={0,1,0,-1};

顺时针:
dx[4]={0,1,0,1};
dy[4]={1,0,-1,0};

所以代码如下:

#include<iostream>
#include<algorithm>
#include<cstring>
int dx[4] = { 1,0,-1,0 };//逆时针
int dy[4] = { 0,1,0,-1 };
using namespace std;int main()
{int n, m;char s[102][102];while(cin >> n >> m){memset(s, 0, sizeof(s));//清零int count = n * m;for (int i = 1; i <= n; i++)for (int j = 1; j <= m; j++)cin >> s[i][j];int d = 0, x = 1, y = 1;while (count){cout << s[x][y];s[x][y] = 0;count--;if (s[x + dx[d]][y + dy[d]] == 0)d = (d + 1) % 4;x = x + dx[d];y = y + dy[d];}cout << endl;
}
return 0;
}

逆序输出螺旋字符矩阵(三种方法)相关推荐

  1. php 去掉后导字符,PHP去除字符串最后一个字符的三种方法实例

    前言 本文讲讲PHP中如何正确的去除字符串中的最后一个字符,之前跟大家分享过一篇关于PHP去除字符串最后一个字符的三种方法的文章,但是没给出实例,下面话不多说,直接上代码,相信一眼就能看出来了,直接将 ...

  2. JAVA输出数组元素的三种方法(for/for each/toString)

    2022_02_19学习输出数组元素的三种方法以及c语言和java中数组的不同点 方法一:for循环输出数组元素 方法二:for each循环语句 方法三:Arrays类中的toString方法 c语 ...

  3. java输出数组中的元素_Java快捷输出数组元素的三种方法

    1.简介 Java中快捷输出数组中各个元素笔者目前所知的就三种方法,今天就简单的做个记录.大家如果有什么更好的方法,麻烦留言评论. 2.代码 public class ArrayPrint { pub ...

  4. 文件逆顺输出到新文件(三种方案)

    方法一:利用递归 /*功能:文件以行为单位,逆顺输出到新文件示例:file1.txt为:123456要求逆顺后输出到文件file2.txt,结果为:563412*/#include <stdio ...

  5. 查找字符串中出现字符最多次数和出现的字符(三种方法)

    第一种 var str = "abcccwwwasdasfqwweqewqeqwnn"var arr = str.split("")var Arr = arr. ...

  6. 每日学习02--JAVA输出数组元素的三种方法(for/for each/toString)

    一.什么是数组 数组是相同类型元素的集合.创建数组的时候,Java就会再内存中分配一段连续的空间来存放数组的内容. 每一个数组内容都有自己的编号,这个编号从0开始的,也就是数组的下标从0开始.通过数组 ...

  7. 利用指针输出数组元素的三种方法:

    #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> int main() {int a[3][5], i, j;//********* ...

  8. pca算法python代码_三种方法实现PCA算法(Python)

    主成分分析,即Principal Component Analysis(PCA),是多元统计中的重要内容,也广泛应用于机器学习和其它领域.它的主要作用是对高维数据进行降维.PCA把原先的n个特征用数目 ...

  9. python把字符串逆序输出_python实现对指定输入的字符串逆序输出的6种方法

    python实现对指定输入的字符串逆序输出的6种方法 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  python实现对指定输入的字符串逆序输出的6种方法.txt  ...

最新文章

  1. 浏览是不是计算机网络功能,什么是因特网——计算机网络是怎么为你服务的?...
  2. 2014Esri国际用户大会ArcGIS Online
  3. JavaScript 变量克隆和判断变量类型
  4. 基于libUSB的USB设备固件更新程序(下载数据)(转)
  5. 关于Qt的三种协议以及是否收费
  6. java实践项目_Java项目开发实践
  7. java getconstructor_java – 线程陷入getDeclaredConstructors的可能原因?
  8. eclipse调试java web_eclipse调试web项目
  9. 一个html中同时引入js和ts,《使用require在ts里引入js》
  10. 获取北京时间授时api stm32 esp8266获取北京时间、年月日、星期api GMT格林威时间转换北京时间
  11. [云计算]两层网络、三层网络的理解
  12. android RecyclerView实战
  13. leetcode 868. Binary Gap
  14. nepctf pwn easystack(_stack_chk_fail)
  15. python协同过滤电影推荐_推荐系统:基于用户和模型的协同过滤电影推荐
  16. Python4班平均成绩统计_医学统计软件应用——SPSS(四) 配对样本及两独立样本t检验...
  17. Windows 2003和XP之间的异同
  18. 汉谟塔C语言,巴别塔的故事
  19. Java方法在art虚拟机中的执行
  20. 阿德莱德大学语言班成绩为C,留学攻略—阿德莱德大学语言班

热门文章

  1. php实现页面雪花效果,JavaScript_使用javascript实现雪花飘落的效果,看了javascript网页特效实例大全 - phpStudy...
  2. Linux cat指令(用于连接文件并打印到标准输出设备上)
  3. 使用ONVIF协议控制海康威视球机
  4. 信号完整性分析心得体会_「职场技能」这8个常用信号完整性的测试手段,你知道几个?...
  5. java 判断语句 性能_前端性能优化:js中优化条件判断语句
  6. php读取文件和读取redis,PHP结合redis实现大文件去重
  7. richtextbox自动滚动到最下面_工业自动化直线运动部件大全,导轨、轴承、衬套、丝杠、导向轴简介说明...
  8. javaweb项目启动后自动查询数据库并刷新数值
  9. JUC系列(五)| Synchonized关键字进一步理解
  10. mac安装mysql mysql命令找不到_MacBook通过Homebrew安装mysql