栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

54. 螺旋矩阵

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

54. 螺旋矩阵

简单的宏观分解,只不过我前几次试都错了,因为print我想要很完美,四个for都是=和<,后来发现了如果x1==x2的时候左到右和右到左其实重复了,而且如果只有一个节点的时候,四个for全都不会进,所以就写成了下面这种并不完美的格式。但是是对的。

#include
#include
using namespace std;
vectorret;

void print(const vector>&a, int x1, int y1, int x2, int y2)
{
	for(int j=y1; j<=y2; ++j)
		ret.push_back(a[x1][j]);

	for(int i=x1+1; i=y1; --j)
			ret.push_back(a[x2][j]);

	if(y1!=y2)
		for(int i=x2; i>x1; --i)
			ret.push_back(a[i][y1]);
}

vector spiralOrder(const vector>& matrix) {
	if(matrix.empty())
		return ret;
	int x1=0, y1=0, x2=matrix.size()-1, y2=matrix[0].size()-1;
	for(;x1<=x2 && y1<=y2;++x1, ++y1, --x2, --y2)
		print(matrix,x1,y1,x2,y2);
	return ret;
}

int main(void)
{
	vectorc={6,9,7};
	vector>d;
	d.push_back(c);
	spiralOrder(d);
	return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/675869.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号