201412-2 Z字形掃描
阿新 • • 發佈:2019-01-02
#include <iostream> using namespace std; int a[510][510]; int main(){ int n; cin>>n; for(int i=0;i<n;i++){ for(int j=0;j<n;j++){ cin>>a[i][j]; } } int judge=0; //判斷方向,0時方向為右和上 int x=0,y=0; cout<<a[x][y]; for(int i=0;i<n*n-1;i++){ if(judge==0){ if(x==0&&y<n-1){ //右走向左下進行轉換 y++; cout<<" "<<a[x][y]; judge=1; } else if(y==n-1&&x<n-1){ //右上走向下進行轉換 x++; cout<<" "<<a[x][y]; judge=1; } else{ x--; y++; cout<<" "<<a[x][y]; } } else { if(x<n-1&&y==0){ //左下向下進行轉化 x++; cout<<" "<<a[x][y]; judge=0; } else if(x==n-1&&y<n-1){ //右走向右上進行轉換 y++; cout<<" "<<a[x][y]; judge=0; } else{ x++; y--; cout<<" "<<a[x][y]; } } } return 0; }
思路:整體分為兩大步驟,左下和右上,左下的兩個銜接轉換方向變換和右上兩個銜接方向變換。
反思:剛開始思路預先定義了靜態儲存空間,但是無法進行輸入,除錯,預定義有誤,無法進入輸入,說明定義有誤。
原因是棧空間不足。(哎,需要補充學習棧和堆的學習啊!!!)