59.螺旋矩阵II

本文深入探讨了螺旋矩阵生成算法的实现细节,通过一个具体的C++代码示例,详细解释了如何从外向内逐层填充矩阵,形成螺旋排列的整数矩阵。此算法适用于n x n的正方形矩阵。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

59.螺旋矩阵II
附加调试

class Solution {
public:
	vector<vector<int>> generateMatrix(int n) {
		vector<vector<int>>matrix(n, vector<int>(n));
		dis(matrix);
		int x = 0, y = 0;
		bool x_axis = 0, y_axis = 0;
		for (int i = 1; i < pow(n, 2) + 1; ++i) {
			if (!x_axis && !y_axis)
			{
				matrix[x][y] = i;
				y++;
				if (y == n || matrix[x][y] != 0)
					x++, y--, y_axis = 1;
			}
			else if (!x_axis&&y_axis)
			{
				matrix[x][y] = i;
				x++;
				if (x == n || matrix[x][y] != 0)
					y--, x--, x_axis = 1;
			}
			else if (x_axis&&y_axis)
			{
				matrix[x][y] = i;

				y--;
				if (y < 0||matrix[x][y] != 0)
					x--, y++, y_axis = 0;
			}
			else if (x_axis && !y_axis)
			{
				matrix[x][y] = i;

				x--;
				if (x<0||matrix[x][y] != 0)
					y++, x++, x_axis = 0;
			}
			dis(matrix);
		}
		return matrix;
	}
	void dis(vector<vector<int>>s)
	{
		system("cls");
		for (int i = 0; i < s.size(); ++i) {
			for (int j = 0; j < s[i].size(); ++j) {
				cout << s[i][j] << " ";
			}
			cout << endl;
		}

	}
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值