54. Spiral Matrix

本文介绍了一种矩阵螺旋遍历的算法实现,通过定义四个方向的递归函数完成遍历,并利用二维布尔数组记录已访问元素,适用于m×n大小的矩阵。

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

For example,
Given the following matrix:

[
 [ 1, 2, 3 ],
 [ 4, 5, 6 ],
 [ 7, 8, 9 ]
]

You should return [1,2,3,6,9,8,7,4,5].

这道题,我们可以使用递归的方法来解决,分别定义四个函数right,down,left,up。

用一个二维vector<vector<bool>>来记录是否已经读取过这个数字了。

具体代码如下

class Solution {
public:
    vector<int> spiralOrder(vector<vector<int>>& matrix) {
        vector<int>fuck;
        if(matrix.empty())return fuck;
	vector<vector<bool>>shit(matrix.size(), vector<bool>(matrix[0].size(), true));
	int m = (int)matrix[0].size();
	int n = (int)matrix.size();
	if(m==1)
	{
	    for(int i=0;i<n;i++)fuck.push_back(matrix[i][0]);
	    return fuck;
	}
	if(n==1)
	{
	    for(auto a:matrix[0])fuck.push_back(a);
	    return fuck;
	}
	int bitch = 0;
	right(bitch, fuck, matrix, m, n,shit);
	return fuck;
    }
void right(int bitch, vector<int> &fuck, vector<vector<int>>matrix, int m, int n, vector<vector<bool>>shit)
{
	for (int i = bitch; i < m - bitch; i++)
	{
		fuck.push_back(matrix[bitch][i]);
		shit[bitch][i] = false;
	}
	if (shit[bitch+1][m - bitch-1])
	{
		bitch++;
		down(bitch, fuck, matrix, m, n, shit);
	}
}
void down(int bitch, vector<int>&fuck, vector<vector<int>>matrix, int m, int n, vector<vector<bool>>shit)
{
	for (int i = bitch; i < n - bitch+1 ; i++)
	{
		fuck.push_back(matrix[i][m - bitch]);
		shit[i][m - bitch] = false;
	}
	if (shit[n - bitch][m - bitch-1])
	{
		left(bitch, fuck, matrix, m, n, shit);
	}
}
void left(int bitch, vector<int>&fuck, vector<vector<int>>matrix, int m, int n, vector<vector<bool>>shit)
{
	for (int i = m - bitch - 1; i >= bitch - 1; i--)
	{
		fuck.push_back(matrix[n - bitch][i]);
		shit[n - bitch][i] = false;
	}
	if (shit[n - bitch - 1][bitch - 1])
	{
		up(bitch, fuck, matrix, m, n, shit);
	}
}
void up(int bitch, vector<int>&fuck, vector<vector<int>>matrix, int m, int n, vector<vector<bool>>shit)
{
	for (int i = n - 1 - bitch; i >= bitch; i--)
	{
		fuck.push_back(matrix[i][bitch - 1]);
		shit[i][bitch - 1] = false;
	}
	if (shit[bitch][bitch])
	{
		right(bitch, fuck, matrix, m, n, shit);
	}
}
};

请别太在意代码里面的fuck,shit以及bitch,毕竟他们是万能的~

跟网型逆变器小干扰稳定性分析与控制策略优化研究(Simulink仿真实现)内容概要:本文围绕跟网型逆变器的小干扰稳定性展开分析,重点研究其在电力系统中的动态响应特性及控制策略优化问题。通过构建基于Simulink的仿真模型,对逆变器在不同工况下的小信号稳定性进行建模与分析,识别系统可能存在的振荡风险,并提出相应的控制优化方法以提升系统稳定性和动态性能。研究内容涵盖数学建模、稳定性判据分析、控制器设计与参数优化,并结合仿真验证所提策略的有效性,为新能源并网系统的稳定运行提供理论支持和技术参考。; 适合人群:具备电力电子、自动控制或电力系统相关背景,熟悉Matlab/Simulink仿真工具,从事新能源并网、微电网或电力系统稳定性研究的研究生、科研人员及工程技术人员。; 使用场景及目标:① 分析跟网型逆变器在弱电网条件下的小干扰稳定性问题;② 设计并优化逆变器外环与内环控制器以提升系统阻尼特性;③ 利用Simulink搭建仿真模型验证理论分析与控制策略的有效性;④ 支持科研论文撰写、课题研究或工程项目中的稳定性评估与改进。; 阅读建议:建议读者结合文中提供的Simulink仿真模型,深入理解状态空间建模、特征值分析及控制器设计过程,重点关注控制参数变化对系统极点分布的影响,并通过动手仿真加深对小干扰稳定性机理的认识。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值