c++输出螺旋矩阵II

该博客介绍了一段C++代码,用于创建一种特殊矩阵。代码中定义了一个名为`Solution`的类,包含一个构造函数和一个友元函数。构造函数初始化矩阵的大小,而`get_mat`方法生成并返回一个矩阵。友元函数用于将矩阵内容输出到控制台。在`main`函数中,用户输入矩阵大小,然后调用`Solution`类的方法生成并打印矩阵。
摘要由CSDN通过智能技术生成

这是一道力扣题目,如下图
在这里插入图片描述
在完成力扣以后,结合构造函数,友元函数以及运算符重载的基础知识完成这段代码

#include<iostream>
#include<vector>
using namespace std;
class Solution 
{
public:
	int NN = N;
	Solution(int nn):N(nn){}
	vector<vector<int>>  get_mat(int n)
	{
		vector<vector<int>> res(n, vector<int>(n, 0));
		int start_x=0,start_y=0;
		int loop = n / 2;
		int count = 0;
		int offset = 1;

		while (loop--)
		{
			int i = start_x;
			int j = start_y;
			for (j = start_y; j < n + start_y - offset; j++)
			{
				res[start_x][j] = count++;
			}
			for (i = start_x; i < n + start_x - offset; i++)
			{
				res[i][j] = count++;
			}
			for (; j > start_y; j--)
			{
				res[i][j] = count++;
			}
			for (; i > start_x; i--)
			{
				res[i][j] = count++;
			}
			offset += 2;
			start_x += 1;
			start_y += 1;
		}
		if (n % 2 == 1)
		{
			res[n / 2][n / 2] =count;
		}
		return res;

 	}
	friend ostream& operator<<(ostream& output, vector<vector<int>>& MAT);
private:
	int N;
};
ostream& operator << (ostream& output, vector<vector<int>>& MAT)
{
	int k = 0;
	while (k < MAT.size())
	{
		for (int kk = 0; kk < MAT.size(); kk++)
			output << MAT[k][kk] << " ";
		output << endl;
		k = k + 1;
	}
	return output;

}
int main()
{
	int NN;
	vector<vector<int>> RES;
	cout << "请输入二位数组维数:";
	cin >> NN;
	Solution SS(NN);
	RES = SS.get_mat(NN);
	cout <<RES << endl;
	return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星光技术人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值