题目描述
蛇形填数
如下图所示,小明用从 1 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 ...
3 5 8 14 ...
4 9 13 ...
10 12 ...
11 ...
...
容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 20 行第 20 列
的数是多少?
答案提交
这是一道结果填空题,你只需要算出结果后提交即可。本题的结果为一个
整数,在提交答案时只填写这个整数,填写多余的内容将无法得分。
解题思路
一开始没打代码就看出答案了hh,大胆猜测小心求证,找规律看出来
但还是让我们从基本的方法开始
方法一
根据判断奇偶斜行,分开判断
参考代码
public class Main {
static int[][] arr = new int[100][100];
public static void main(String[] args) {
f();
System.out.println(arr[20][20]);
}
private static void f() {
int n = 0;
for (int i = 1; i < 50; i++) {
if (i % 2 == 1) {
for (int j = 1; j <= i; j++) {
arr[i - j + 1][j] = ++n;
}
} else {
for (int j = 1; j <= i; j++) {
arr[j][i - j + 1] = ++n;
}
}
}
}
}
答案:761
方法二
找规律,列出前四个1,5,13,25
发现这几个数都是两个平方数相加组成
可以得到
arr[n][n]=(n-1)2+n2
答案:761