题目描述
本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。
如下图所示,小明用从 11 开始的正整数“蛇形”填充无限大的矩阵。
1 2 6 7 15 ...3 5 8 14 ...4 9 13 ...10 12 ...11 ......
容易看出矩阵第二行第二列中的数是 5。请你计算矩阵中第 2020 行第 2020 列的数是多少?
运行限制
- 最大运行时间:1s
- 最大运行内存: 128M
代码解释:第一行,先看第一列,是否是奇偶列,偶数列的话行(r)加1,列(c)减1,奇数列的话,水平平移就好,即列(c)+1。
看第一列,也就是看行,行为偶数的话,只要行数(r)加1即可,行为奇数的话,行数(r)减1,列数(c)加1。
从中间来看的话,判断行与列相加是奇数还是偶数,偶数的话,行数(r)加1就好,奇数的话,行数(r)减1,列数(c)加1。
数字从1开始,不断相加,按照条件来走,即可。
,
代码如下
-
public class 蛇形填数 { public static void main(String[] args) { int r=1,c=1,ans=1; while(r!=20 || c!=20) { if(r==1) { if(c%2==0) { r++;c--; }else { c++; } } else if(c==1)// 一定要是else if 不能是if,会导致答案数目少。 { if(r%2==0) { r++; }else { r--;c++; } } else if((r+c)%2==0) { r--;c++; }else { r++;c--; } ans++; } System.out.println(ans); }
-