Advertisement

试题基础练习回形取数

阅读量:

问题描述
回形取数的规则是沿着矩阵的边缘依次获取数值,当当前行进方向无法继续取数或该位置已被访问过时,需向左旋转90度调整方向。初始位置位于矩阵的左上角,初始行进方向为向下。
输入格式
输入的第一行包含两个不超过200的正整数m和n,分别表示矩阵的行数与列数。随后m行中每行包含n个整数,用于描述该矩阵的具体内容。
输出格式
输出仅一行,共mn个数字,为按照回形取数规则从输入矩阵中提取的结果。数字之间以一个空格进行分隔,且行末不应出现多余的空格。
样例输入
3 3
1 2 3
4 5 6
7 8 9
样例输出
1 4 7 8 9 6 3 2 5
样例输入
3 2
1 2
3 4
5 6
样例输出
1 3 5 6 4 2
思路:我采用深度优先搜索的方法来实现这一过程,通过设置一个标记数组记录已访问的位置,在遍历过程中判断边界条件即可完成操作。

复制代码
    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <algorithm>
    #include <list> 
    using namespace std;
    int m,n,a[201][201],book[201][201]

全部评论 (0)

还没有任何评论哟~