基础练习-回形取数


title: 基础练习 回形取数
categories:

  • ACM
  • 逻辑
    tags:
  • 回形取数
    date: 2020-03-12 10:17:09

将一个方向的点遍历并输出,直到碰壁,然后改变方向,然后再输出……。不能用dfs因为需要的是碰壁再换方向,而不是每次都改变方向。

问题

试题 基础练习 回形取数

提交此题

资源限制

时间限制:1.0s 内存限制:512.0MB

问题描述

回形取数就是沿矩阵的边取数,若当前方向上无数可取或已经取过,则左转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
#include
#include
#include
#include
//#include
#define PI 3.14159265358979323
#define MAX 0x3f3f3f3f
using namespace std;
int map[210][210],m,n,sum=1,x,y;
int dir[4][2]={1,0,0,1,-1,0,0,-1};
int main(){
	//freopen("input2.txt", "r", stdin);
	cin>>m>>n;
	for(int i=0;i>map[i][j];
	x=y=0;
	cout<=0&&xx=0&&yy

你可能感兴趣的:(ACM)