第十一届蓝桥杯大赛软件类省赛第二场 Java 大学 B 组 题解三:试题 C: 蛇形填数
试题 C: 蛇形填数
1. 题目
直接贴原题图了
2. 分析
要求第20行第20列的数,在矩阵中用二维数组nums表示就是求nums[19][19]。数据规模不大,只需要模拟填充矩阵,覆盖到nums[19][19]的值就可以。观察矩阵可以看出,矩阵斜着填充,往右上、再往左下,重复这个过程,循环填充就可以。
- 代码思路:用i、j分别标记当前要填充的坐标。大循环控制什么时候结束填充,嵌套两个内循环,一个是往右上填充,一个是往左下填充。
- 实现细节:
- 往右上时,i递减,j递增。假设矩阵无限大,那么只需要判断i是否小于0这个边界条件。
- 往左下时,i递增,j递减。需要维护j是否小于0这个条件。
- 假如某个表量小于边界0,那么退出填充循环,再给该表量赋值0。
三个小细节,决定了代码的易写程度、以及代码的长度。具体的思想,看如下代码
3. 代码
答案:761
java代码
public class C {
static int maxn = 1000;
public static void main(String[] args) {
// TODO Auto-generated method stub
int[][] nums