public class Main {
public static void main(String[] args) {
int N = 20;
// int[][] arr = new int[N*2+1][N*2+1]; 因为题目只要求矩阵第 20 行第 20 列的值,所以不用全部值都储存
boolean flag = true;
for(int num = 1, a, b = a = 0;; num++) { // a = 0 为上边界,b = 0 为左边界,这里没有设右边界和下边界,因为不需要。
// arr[a][b] = num; 如上,题目只要求矩阵第 20 行第 20 列的值,不必储存
if(a == N-1 && b == N-1){
System.out.println(num); //
break;
}
if(flag){ // flag = true 往下
if(b == 0){ // 抵达边界,则反转
flag = !flag;
}
else b--;
a++;
}
else{ // flag = false 往上
if(a == 0){ // 抵达边界,则反转
flag = !flag;
}
else a--;
b++;
}
}
}
}