第四章:多维数组和矩阵 --------------- 4.1 基础题:顺时针打印二维数组

顺时针打印二维数组:

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 

 1      2     3     4      5
 6      7     8     9     10
11    12   13   14    15
16    17   18   19     20

 则依次打印出数字1 2 3 4 5 10 15 20 19 18 17 16 11 6 7 8 9 14 13 12。

 

#include<iostream>
#include<vector>
using namespace std;

void printMat(vector<vector<int> > mat)
{
	int left=0,right=mat.front().size()-1; //left:左边列号;right:右边列号
	int top=0,bottom=mat.size()-1;//top:上边行号; bottom:下边行号
	while(left<=right&&top<=bottom)
	{
		int l=left,t=top+1,r=right-1,b=bottom-1;
		//上面一条边,从左到右
		while(l<=right)
		{
			cout<<mat[top][l++]<<" ";
		} 
		//右边一条边,从上到下
		while(t<=bottom)
		{
			cout<<mat[t++][right]<<" ";
		} 
		//下边一条边,从右向左
		while(r>=left)
		{
			cout<<mat[bottom][r--]<<" ";
		} 
		//左边一条边,从下到上
		while(b>=top+1)
		{
			cout<<mat[b--][left]<<" ";
		} 
		left++;
		top++;
		right--;
		bottom--;		
	} 	
}

int main()
{
	vector<vector<int> > matrix;
	//二维向量初始化
	for(int i=0,data=1;i<4;i++)  //4行 
	{
		vector<int> temp;
		for(int j=0;j<5;j++)  //5列 
		{
			temp.push_back(data);
			cout<<data<<" ";
			data++;
		}
		cout<<endl;
		matrix.push_back(temp);		
	} 
	
	printMat(matrix);
	return 0;	
}

结果:

 

参考:https://blog.csdn.net/u014474985/article/details/79377838 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值