201412-2 Z字形扫描
程序员文章站
2022-04-25 20:02:05
...
#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;
}
思路:整体分为两大步骤,左下和右上,左下的两个衔接转换方向变换和右上两个衔接方向变换。
反思:刚开始思路预先定义了静态存储空间,但是无法进行输入,调试,预定义有误,无法进入输入,说明定义有误。
原因是栈空间不足。(哎,需要补充学习栈和堆的学习啊!!!)
上一篇: spring boot 之 aop日志
下一篇: 201509-1 数列分段