欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-06-07 14:42:25
...

什么是螺旋矩阵?

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

 

如图11  *   7的螺旋矩阵

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

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

 

如图11  * 11的螺旋矩阵

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

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

 

 

话不多说,上代码:

#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;
}

 

相关标签: 螺旋矩阵 C