螺旋螺旋螺旋稳
来源:互联网 发布:java缓存和中间件 编辑:程序博客网 时间:2024/06/08 14:37
有这么一个矩阵,例如
anmlbopkcfuc
要螺旋着读,例如:
abcfucklmnop
再或者
anmlkcufcbop
也就是
1 2 3 48 7 6 59 10 11 12
按照1->2->3->4->5->12->11->10->9->8->7->6这样螺旋来读
假如就按照以上这种方法读入,可以发现,其实方向是循环的:
向右->向下->向左->向上->向右->…………
不妨可以用一个这种枚举来形象化记录方向
enum direction {left , right , down , up} now = right ;// 一开始是右,所以初始化为右// 需要改变方向,比如向下now = down ;
下面是完整的代码:
#include <stdio.h>int main () { int row , col ; // 矩阵的行和列 enum direct {left , right , up , down} now = right ; // 检索方向 int r = 0 , c = 0 ; // 初始位置 scanf ("%d %d" , &row , &col) ; getchar () ; // 此处需要一个getchar()来处理换行符 char ch[row][col] ; // 原始矩阵数组 int book[row][col] ; // 标记下该点有没有被走过,走过了为1,没走过为0 char a[row*col] ; // 储存读出后的数组 for (int i = 0 ; i < row ; i ++) { for (int j = 0 ; j < col; j ++) { scanf ("%c" , &ch[i][j]) ; book[i][j] = 0 ; // 一开始全部都没走过 } getchar () ; // 每行输入完都需要处理换行符 } for (int i = 0 ; i < row*col ; i ++) { a[i] = ch[r][c] ; book[r][c] = 1 ; // 标记已经被走过了 // 我们这里起始方向是向右,循环是右->下->左->上->右..... // 如果要改起始方向,则这个循环也会改变,下面需要微调 if (now == right) { c ++ ; if (c + 1 == col || (c + 1 < col && book[r][c + 1])) // c + 1 == col表示到边界了,那么就要改方向 // c + 1 < col && book[r][c + 1]表示还没到边界,但是该点已经被走过啦,那么要改方向 // 以下其他方向也是一样的道理 now = down ; // 然后右->下 } else if (now == down) { r ++ ; if (r + 1 == row || (r + 1 < row && book[r + 1][c])) now = left ; } else if (now == left) { c -- ; if (c == 0 || (c > 0 && book[r][c - 1])) now = up ; } else if (now == up) { r -- ; if (r == 0 || (r > 0 && book[r - 1][c])) now = right ; } } for (int i = 0 ; i < row*col ; i ++) printf ("%c" , a[i]) ; printf ("\n") ; // 输出排好了的数组 return 0 ;}
0 0
- 螺旋螺旋螺旋稳
- 螺旋
- 螺旋打印
- 数学螺旋
- 弗雷泽螺旋
- 螺旋方阵
- 螺旋矩阵
- 螺旋方阵
- 螺旋队列
- 螺旋队列
- 螺旋队列
- 螺旋矩阵
- 螺旋队列
- 螺旋矩阵
- 螺旋模型
- 螺旋队列
- 螺旋队列
- 螺旋矩阵
- 从程序员到数据科学家:SAS 编程基础 (01)
- leetcode 537. Complex Number Multiplication
- Weave实现跨主机容器互联
- 《c程序设计语言》读书笔记(五)——指针与数组
- 从程序员到数据科学家:SAS 编程基础 (02)
- 螺旋螺旋螺旋稳
- 如何辨别是否是纯数字类型
- CyclicBarrier和CountDownLatch区别
- POJ 3259 Wormholes (BellmanFord判断图是否存在负环)
- 小项目第二天图书的现实完成
- Python打包与发布的概念总结
- POJ
- gcc5.3.0安装
- LeetCode 8: String to Integer (atoi) (python)