顺时针螺旋打印二维数组

想起来一道做过两次的竞赛题,明明之后重写了标程第二次还是想不起来怎么写了,愣是连续两次打表过(捂脸

题目:1,2,3…n*n 的数字按照顺时针螺旋的形式打印成矩阵,如下:

输入数字2,则程序输出:
1 2
4 3
输入数字3,则程序输出:
1 2 3
8 9 4
7 6 5
输入数字4, 则程序输出:
1     2    3    4
12  13  14  5
11  16  15  6
10   9    8   7

 

思路:用递归的方式从外向内顺时针打印每一圈,模拟顺时针转动时x和y的坐标位置即可

代码:

#include
using namespace std;

int a[105][105];

void fun(int n,int num,int x,int y)
{
	int i;
	a[x][y]=num++;
	if(n==0||n==1)
		return ;
	for(i=0;i>n;
	fun(n,1,0,0);
	for(i=0;i

 

你可能感兴趣的:(笔试题,题解)