题目:
如下图所示,小明用从1 开始的正整数“蛇形”填充无限大的矩阵。
容易看出矩阵第二行第二列中的数是5。请你计算矩阵中第20 行第20 列的数是多少?
分析:
蛇形填树顾名思义,前后的大小都是相差为1。
从一开始的1,1开始,列数加一,当列数大于1那么列数减一行数加一,每经过一个坐标sum自增并赋值给这个坐标,列数到达一之后,行数加一,当行数大于1那么行数减一列数加一,每经过一个坐标sum自增并赋值给这个坐标。反复进行,直到进行到第n行第n列(所求值)的值发生变化为止
步骤:
package 历届真题省赛阶段;
import java.util.Scanner;
public class 测试1 {
public static void main(String[] args) {
// 1 2 6 7 15 ...
// 3 5 8 14 ...
// 4 9 13 ...
// 10 12 ...
// 11 ...
// ...
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.close();
int arr[][]= new int [50][50];
int sum=0;//数
int col=1;//列坐标
int row=1;//行坐标
arr[1][1]=sum;
while (arr[n][n]==0) {//当第n行第n列没有被赋值时程序进行
arr[row][col++]=++sum;//列数加一
while (col>1) {
arr[row++][col--]=++sum;//当列数大于1时蛇形顺序的下一个加一
}
arr[row++][col]=++sum;//列数加一
while (row>1) {
arr[row--][col++]=++sum;//当行列数大于1时蛇形顺序的下一个加一
}
}
System.out.println(arr[n][n]);
}
}