順時針打印矩陣


Q:輸入一個矩陣,按照從外向里以順時針的順序依次打印出每一個數字


A:注意判斷轉向和每次轉向的臨界。

四個轉向:右->下,下->左,左->上,上->右

臨界初始(矩陣為mxn):右臨界為n-1,下臨界為m-1,左臨界為0,上臨界為1

 

//定義四個方向
enum Direct {Left,Right,Up,Down};
void Func(int **matrix,int m,int n)
{
	//初始增量為向右
	int stepX=0;
	int stepY=1;
	Direct direct=Right;
	//初始范圍,注意up為1而不為0
	int rangeLeft=0;
	int rangeRight=n-1;
	int rangeUp=1;
	int rangeDown=m-1;

	//初始位置為第一個
	int x=0,y=0;
	for(int i=0;i<m*n;++i)
	{
		cout <<matrix[x][y]<<" ";
		switch(direct)
		{
		case Left:
		{
			if(y>rangeLeft)
				y+=stepY;
			else
			{
				direct=Up;
				stepX=-1;
				x+=stepX;
				rangeLeft+=1;
			}
			break;
		}
		case Right:
			{
				if(y<rangeRight)
					y+=stepY;
				else
				{
					direct=Down;
					stepX=1;
					x+=stepX;
					rangeRight-=1;
				}
				break;
			}
		case Up:
			{
				if(x>rangeUp)
					x+=stepX;
				else
				{
					direct=Right;
					stepY=1;
					y+=stepY;
					rangeUp+=1;
				}
				break;
			}
		case Down:
			{
				if(x<rangeDown)
					x+=stepX;
				else
				{
					direct=Left;
					stepY=-1;
					y+=stepY;
					rangeDown-=1;
				}
				break;
			}
		default:
			break;		
	}	
}
	cout <<endl;
}

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



順時針打印矩陣 順時針打印矩陣 順時針打印矩陣 7 順時針打印矩陣 順時針打印矩陣 順時針打印矩陣 順時針打印矩陣 順時針打印矩陣 順時針打印矩陣 順時針打印矩陣
 
粤ICP备14056181号  © 2014-2021 ITdaan.com