數字龍捲風- #include <iostream>
- using namespace std;
- int main()
- {
- int N,d;
- cin>>N>>d;//N是二維陣列d是起始方向
- int a[N][N];//二維陣列
- for(int i=0;i<N;i++)//輸入二維陣列的值
- for(int j=0;j<N;j++)
- cin>>a[i][j];
- int dx[4]={-1,0,1,0};//向左,向上,向右,向下時,座標x值的改變
- int dy[4]={0,-1,0,1};//向左,向上,向右,向下時,座標y值的改變
- int x=N/2;//起始點x
- int y=N/2;//起始點y
- cout << a[y][x];//起始點的陣列索引
- int countdown=N*N-1;//總共要移動幾步
- int cnt=0;//換方向時計算用
- int step=1;//先設定每走一步會換方向
- while(true){
- for(int i=0;i<step;i++){ //此迴圈控制每走幾步要換方向
- y=y+dy[d]; //新座標的y值
- x=x+dx[d]; //新座標的x值
- cout<<a[y][x]; //輸出新座標的陣列值
- countdown--; //總步數減1
- if(countdown==0)
- {
- break; //若走完全程才離開迴圈
- }
- }
- if(countdown==0)
- {
- break;
- }
- d++;//換下個方向
- d=d%4;//限制d介於0~3範圍
- cnt++;//換方向的次數
- if(cnt%2==0){//若換方向的次數為偶數
- step++;//每一方向就再多走一步
- }
- }
- return 0;
- }
複製代碼 |