【猿辅导笔试题】发水果 顺时针打印矩阵

中午是猿辅导水果时间,小猿会给每个同学发水果。猿辅导有一个矩形的办公区域,共有N 排,每排M个工位。平时小猿按照从第一排到最后一排的顺序发水果,某一天小猿突然发现似乎旋转着发水果是一种更有趣的方式,所以决定试试按照逆时针方向螺旋发水果。

已知每个工位有一个数字,表示该工位员工的工号,每个员工的工号不同。已知小猿从(0, 0)位置开始,按照逆时针螺旋的顺序发水果,请输出收到水果的员工工号序列。

输入描述:

第一行 两个数, 数组行列 N,M
接下来 N 行,每行 M 个正整数,表示每个位置的员工工号
1 ≤ N ≤ 1000
1 ≤ M ≤ 1000

输出描述:

发放水果工号序列

输入例子1:

3 3
1 2 3 
4 5 6 
7 8 9

输出例子1:

1 4 7 8 9 6 3 2 5

思路:通过递归从外到内顺时针打印矩阵,模拟顺时针坐标x和y的变动,依次打印元素。
每次循环完一圈,n和m的范围都要-2,但由于n不一定等于m,递归至内圈时应注意防止越界,将剩余元素输出
使用sum来判断所有的元素是否全部输出

代码:

#include
using namespace std;

int a[1005][1005];

void fun(int n,int m,int x,int y,int sum)
{
	int i;
	if(n<0)
		n=0;    //防止越界
	if(m<0)
		m=0;
	cout<>n>>m;
	for(i=0;i>a[i][j];
	fun(n,m,0,0,n*m);
	return 0;
}

 

你可能感兴趣的:(笔试题,题解,笔试,螺旋打印,猿辅导)