`
Dev|il
  • 浏览: 121807 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

螺旋矩阵

 
阅读更多

给一个正整数n,输出一个n*n的螺旋矩阵
螺旋矩阵可以是逆时针也可以是顺时针,也可以是从里到外,也可以是从外到里

顺时针,从外到里:


#include <iostream>
using namespace std;

const int _N = 100;
int matrix[_N][_N];

//思想:递归每一圈
/*
  1   2   3   4
  12  13 14   5
  11  16  15  6
  10   9  8   7 
*/
void setMatrix(int x, int y, int start, int n)
{
	int i;
	if(n <= 0)
		return;
	if(n == 1)
	{
		matrix[x][y] = start;
		return;
	}
	for(i = x; i < x + n - 1; i++)  //左边
		matrix[i][y] = start++;
	for(i = y; i < y + n - 1; i++) //下边
		matrix[n + x - 1][i] = start++; 
	for(i = x + n - 1; i > x; i--) //右边
		matrix[i][n + y - 1] = start++;
	for(i = y + n - 1; i > y; i--) //上边
		matrix[x][i] = start++;
	setMatrix(x + 1, y + 1, start, n - 2);

}
int main()
{
	int n, i, j;
	while(cin>>n)
	{
		setMatrix(0, 0, 1, n);
		for(i = 0; i < n; i++)
		{
			for(j = 0; j < n; j++)
			{
				printf("%4d", matrix[i][j]);
			}
			cout<<endl;
		}
	}
	return 0;
}
  • 大小: 9.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics