C++循环输出M * N 的螺旋矩阵

什么是螺旋矩阵?

螺旋矩阵是指一个呈螺旋状的矩阵,它的数字由第一行开始到右边不断变大,向下变大,向左变大,向上变大,如此循环。

 

如图11  *   7的螺旋矩阵

 

如图11  * 11的螺旋矩阵

 

 

话不多说,上代码:

#include <iostream>
#include <iomanip>
using namespace std;
 
int main()
{

	#define M   11 //矩阵行数
	#define N     7 //矩阵列数

	int matrix[M][N] = { 0 };
	int row = 0;
	int col =   0;
	int start = 1; //起始值



	int m =M;
	int n = N;
	//可以画N/2个圈
	for (int count = 0; count < N / 2; count++)  
	{
		for (; col < n - 1; col++) //a排赋值
		{
			matrix[row][col] = start++;
		}
		for (; row < m - 1; row++) //b排赋值
		{
			matrix[row][col] = start++;
		}
		for (col = n - 1; col > count; col--) //c排赋值
		{
			matrix[row][col] = start++;
		}
		for (row = m- 1; row > count; row--) //d排赋值
		{
			matrix[row][col] = start++;
		}
		//进入下一圈
		m--;
		n--;
		row++;
		start--; //这里是因为在换圈的时候会多加1
	}
	if (N % 2 != 0) //如果size为奇数则最后中间那一个数遍历不到,这里补上
	{
		int  z = M - 2 *row;
		for(int i=0  ;  i< z   ;++i)
		matrix[row++][col + 1] =++ start ;
	}

	//输出数组
	for (int i = 0; i < M; i++)
	{
		for (int j = 0; j < N; j++)
		{
			cout << setw(3) << matrix[i][j];//设定输出宽度为3
		}
		cout << endl;
	}


	return 0;
}

 

相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页