今天在做蓝桥杯的真题练系的时候发现了一个有意思的题目,蛇形填数题,题目如下

标准的解法应该是分别对奇数和偶数的行和列做不同的操作,对内部的数据也以右上,左下两个方向分开看待(行数+列数=奇数时是左下方向,行数+列数=偶数时是右上方向)。代码如下

import java.util.*;
public class Main {public static void main(String[] args)//此处的r代表行,c代表列 {int r = 1 , c = 1 , num = 1;//第一行第一列while(r != 20 || c != 20){//我们要求的是第二十行第二十列所填的数if(r == 1){//行等于1的时候开始看列if(c % 2 == 1) c ++ ;//如果是奇数列,则直接水平向右移动else {r ++ ; c --;//如果是偶数列,则向左下移动}}else if(c == 1){//列等于1的时候看行if(r % 2 == 0) r ++;//如果是偶数行,则直接向下移动else {r -- ; c ++ ;//如果是奇数行则直接向右上移动}}else if((r + c) % 2 == 1) {//来看中间的数据内容,如果行数加列数是奇数r ++ ; c -- ;//向左下方向移动}else {//如果行数+列数是偶数,r -- ; c ++ ;//向右上方向移动}num ++ ;//取值}System.out.println(num);//输出第二十行第二十列所填的数字}
}

运行结果如图:

其实也是一种很巧妙地解法,但是我还是觉得有一些繁琐,所以就往后面又填了两行

1 2 6 7 15
3 5 8 14 17
4 9 13 12 26
10 12 19 25 42
11 20 24 33 41

我们就可以注意到,从表中的1-表中的41是一条斜线而这条斜线上的所有数字刚好就代表着第n行第n列所填进去的数字,而对这些数字进行观察我们可以发现一些巧妙的规律

第一行第一列:1

第二行第二列:5

第三行第三列:13

第四行第四列:32

第五行第五列:41

或许这样看还看不出什么,那要是我们换个写法呢?


第一行第一列:1


第二行第二列:1+4


第三行第三列:1+4+8


第四行第四列:1+4+8+16


第五行第五列:1+4+8+16+20

由此我们就可以发现个规律

第一行第一列:1=1+(1-1)*4


第二行第二列:5=1+(1-1)*4+(2-1)*4


第三行第三列:13=1+(1-1)*4+(2-1)*4+(3-1)*4


第四行第四列:32=1+(1-1)*4+(2-1)*4+(3-1)*4+(4-1)*4


第五行第五列:41=1+(1-1)*4+(2-1)*4+(3-1)*4+(4-1)*4+(5-1)*4


故第n行第n列所填数=1+(1-1)*4+(2-1)*4+(3-1)*4+........(n-1)*4

这个公式还可以进一步的化简,但是为了后面写程序的方便就不再化简。

现在我们就可以写出程序

package suanfa;
import java.util.Scanner;
public class Maincaogap {public static void main(String[] args) {Scanner sc=new Scanner (System.in);System.out.print("请输入你想查询的行列数:");int n=sc.nextInt();int sum=1;//对应上述公式中的“1”for(int i=0;i<n;i++){int num=i*4;//因为是从0开始到20的整数,所以i的取值已经是n-1的值了sum+=num;}System.out.print(sum);}}

运行结果如下


这就是今天的分享,欢迎大家在品论区留下更好的想法或者解决蛇形填数的方法

蓝桥杯JAVA——蛇形填数(内含标准解法和取巧找规律型解法)相关推荐

  1. 【模拟】蓝桥20:蛇形填数

    题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 如下图所示,小明用从 11 开始的正整数"蛇形"填充无限大的矩阵. 1 2 6 7 15 ... ...

  2. 第六届蓝桥杯六角填数

    如图[1.png]所示六角形中,填入1~12的数字.   使得每条直线上的数字之和都相同.   图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 请通过浏览器提交答案,不要填写多余的 ...

  3. 第十三届蓝桥杯省赛B组 第10题(LCDS?找规律.)

    题目 题意: 给定n个数,要求用魔法把n个数全都变成1.魔法:将一段连续区间的数ai变成sqrt(a[i]/2+1) 思路: 一个数最多施展魔法6次即可,可以预处理出每个数变到1的路径.实质是找到两个 ...

  4. 第十一届蓝桥杯A组省赛填空试题 C: 蛇形填数(Java)

    试题 C: 蛇形填数 本题总分:10 分 [问题描述] 如下图所示,小明用从 1 开始的正整数"蛇形"填充无限大的矩阵. 容易看出矩阵第二行第二列中的数是 5.请你计算矩阵中第 2 ...

  5. 第十一届蓝桥杯大赛省赛真题-填空题-蛇形填数(Java实现)

    试题 C: 蛇形填数 本题总分:10 分 [问题描述] 如下图所示,小明用从 1 开始的正整数"蛇形"填充无限大的矩阵. 容易看出矩阵第二行第二列中的数是 5.请你计算矩阵中第 2 ...

  6. 2020年第十一届蓝桥杯 - 省赛 - Python大学组 - D.蛇形填数

    这道题同样还是: 2020年第十一届蓝桥杯 - 省赛 - C/C++研究生组 - D.蛇形填数 2020年第十一届蓝桥杯 - 省赛 - Java研究生组 - D.蛇形填数 Ideas 这题其实严格意义 ...

  7. 2020年第十一届蓝桥杯 - 省赛 - C/C++大学生A组 - C.蛇形填数

    2020年第十一届蓝桥杯 - 省赛 - C/C++大学生A组 - C.蛇形填数 Ideas 这题其实严格意义上属于一道找规律的题目,并不是啥算法题. 我们可以先按照它的规律多写几行. 1 2 6 7 ...

  8. 蓝桥杯真题——蛇形填数(c语言)

    目录 一.题目描述 二.解题思路 三.程序操作 一.题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 如下图所示,小明用从 1 开始的正整数"蛇形" ...

  9. 水洼数 DFS 蓝桥杯 java代码

    水洼数 DFS 蓝桥杯 java代码 有一个大小为N * M的院子,雨后积起了水,八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼 限制条件 N, M <=100 10 12 W.. ...

  10. 2020 蓝桥杯 Java实现 10月B组省赛

    题目列表 试题 A: 门牌制作 试题 B: 寻找 2020 试题 C: 蛇形填数 试题 D: 七段码 试题 E: 排序 试题 F: 成绩分析 试题 G: 单词分析 试题 H: 数字三角形 试题 I: ...

最新文章

  1. 733.图像渲染(主讲题意)
  2. 7-2 然后是几点 (C语言)
  3. 求字符串中最长无重复子序列
  4. 函数计算支持 MySQL 实例绑定
  5. 30.Node.js 全局对象
  6. Java IO: ByteArray和Filter
  7. Oracle数据库版本维护支持结束时间表以及数据库版本发行时间表
  8. python时间转绝对秒数_python时间时分秒与秒数的互相转换
  9. 磁盘阵列(RAID) 级别
  10. 第14章 学习scikit-learn文档
  11. EndNote 文献管理软件安装包
  12. Qt Quick综合实例之文件查看器
  13. 三分钟教你学Git(十二) 之 fast-forward
  14. lbj学习日记 06 一维数组和二维数组刷题课
  15. 链接与自定义函数名同名的库函数
  16. jQuery(一个JavaScript库)
  17. 圆跳动基础知识(几何公差)
  18. 2020北京国际金融安全论坛(二)
  19. 清华大学岂凡超:义原知识库的应用和扩充
  20. HTTP状态码1xx到5xx

热门文章

  1. Python 关系运算符
  2. 字节面试题——计算机网络,附答案
  3. 简历加分第一步[基于Wordpress搭建个人博客]
  4. Neo4j的基本操作
  5. php支付宝第三方授权,【后端开发】原生 PHP 实现支付宝 App 第三方登录获取用户信息...
  6. ansible连接cisco设备报错问题
  7. 你好offer之--计算机网路
  8. 深入理解强化学习——强化学习的历史:试错学习
  9. uni-app中swiper组件无效果解决方案
  10. System01 DAY06(用户账号应用)