分析:将模型简单化,分为向斜上方走和向斜下方走,当遇到边界时就
- 处理当步该走方向
- 变化整体方向 flag = !flag
public class Main {
public static int a[][] = {
{1,2,3,4},
{5,6,7,8},
{9,10,11,12}
};
public static void main(String[] args) {
/* for(int i = 0 ; i < 3; i ++) {
for(int j = 0; j < 4; j ++) {
System.out.print(a[i][j] + " ");
}
System.out.println();
}*/
PrintZ();
}
private static void PrintZ() {
boolean flag = true;
int nr = 3;
int nc = 4;
int i = 0, j = 0;
while(i < nr && j < nc) {
System.out.print(a[i][j] + " ");
//System.out.println(a[0][0]);
if(flag) {
if(i == 0 && j < nc) { //向斜上走到第一行则向右走一步,变向
j ++ ;
//System.out.print(a[i][j] + " ");
flag = !flag;
continue;
}
else if(j == nc - 1 && i > 0) {//向斜上走到最后一列则向下走一步,变向
i ++;
flag = !flag;
//System.out.print(a[i][j] + " ");
}
else {
i --;
j ++;
//System.out.print(a[i][j] + "");
}
}
else {
if(j == 0 && i < nr) { //向斜下走到第一列则向下走一步,变向
i ++ ;
flag = !flag;
//System.out.print(a[i][j] + "");
}
else if(i == nr - 1 && j > 0) {//向斜下走到最后一行则向右走一步,变向
j ++;
flag = !flag;
//System.out.print(a[i][j] + "");
}
else {
i ++;
j --;
//System.out.print(a[i][j] + "");
}
}
}
}
}
总结:此类题目就是模拟的解题方法,注意每一步该走方向,注意细节