第四章:多維陣列和矩陣 --------------- 4.1 基礎題:順時針列印二維陣列

Curtis_發表於2019-03-13

順時針列印二維陣列:

輸入一個矩陣,按照從外向裡以順時針的順序依次列印出每一個數字,例如,如果輸入如下矩陣: 

 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 

 

相關文章