蓝桥杯JAVA——蛇形填数(内含标准解法和取巧找规律型解法)
今天在做蓝桥杯的真题练系的时候发现了一个有意思的题目,蛇形填数题,题目如下
标准的解法应该是分别对奇数和偶数的行和列做不同的操作,对内部的数据也以右上,左下两个方向分开看待(行数+列数=奇数时是左下方向,行数+列数=偶数时是右上方向)。代码如下
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——蛇形填数(内含标准解法和取巧找规律型解法)相关推荐
- 【模拟】蓝桥20:蛇形填数
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 如下图所示,小明用从 11 开始的正整数"蛇形"填充无限大的矩阵. 1 2 6 7 15 ... ...
- 第六届蓝桥杯六角填数
如图[1.png]所示六角形中,填入1~12的数字. 使得每条直线上的数字之和都相同. 图中,已经替你填好了3个数字,请你计算星号位置所代表的数字是多少? 请通过浏览器提交答案,不要填写多余的 ...
- 第十三届蓝桥杯省赛B组 第10题(LCDS?找规律.)
题目 题意: 给定n个数,要求用魔法把n个数全都变成1.魔法:将一段连续区间的数ai变成sqrt(a[i]/2+1) 思路: 一个数最多施展魔法6次即可,可以预处理出每个数变到1的路径.实质是找到两个 ...
- 第十一届蓝桥杯A组省赛填空试题 C: 蛇形填数(Java)
试题 C: 蛇形填数 本题总分:10 分 [问题描述] 如下图所示,小明用从 1 开始的正整数"蛇形"填充无限大的矩阵. 容易看出矩阵第二行第二列中的数是 5.请你计算矩阵中第 2 ...
- 第十一届蓝桥杯大赛省赛真题-填空题-蛇形填数(Java实现)
试题 C: 蛇形填数 本题总分:10 分 [问题描述] 如下图所示,小明用从 1 开始的正整数"蛇形"填充无限大的矩阵. 容易看出矩阵第二行第二列中的数是 5.请你计算矩阵中第 2 ...
- 2020年第十一届蓝桥杯 - 省赛 - Python大学组 - D.蛇形填数
这道题同样还是: 2020年第十一届蓝桥杯 - 省赛 - C/C++研究生组 - D.蛇形填数 2020年第十一届蓝桥杯 - 省赛 - Java研究生组 - D.蛇形填数 Ideas 这题其实严格意义 ...
- 2020年第十一届蓝桥杯 - 省赛 - C/C++大学生A组 - C.蛇形填数
2020年第十一届蓝桥杯 - 省赛 - C/C++大学生A组 - C.蛇形填数 Ideas 这题其实严格意义上属于一道找规律的题目,并不是啥算法题. 我们可以先按照它的规律多写几行. 1 2 6 7 ...
- 蓝桥杯真题——蛇形填数(c语言)
目录 一.题目描述 二.解题思路 三.程序操作 一.题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 如下图所示,小明用从 1 开始的正整数"蛇形" ...
- 水洼数 DFS 蓝桥杯 java代码
水洼数 DFS 蓝桥杯 java代码 有一个大小为N * M的院子,雨后积起了水,八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼 限制条件 N, M <=100 10 12 W.. ...
- 2020 蓝桥杯 Java实现 10月B组省赛
题目列表 试题 A: 门牌制作 试题 B: 寻找 2020 试题 C: 蛇形填数 试题 D: 七段码 试题 E: 排序 试题 F: 成绩分析 试题 G: 单词分析 试题 H: 数字三角形 试题 I: ...
最新文章
- 733.图像渲染(主讲题意)
- 7-2 然后是几点 (C语言)
- 求字符串中最长无重复子序列
- 函数计算支持 MySQL 实例绑定
- 30.Node.js 全局对象
- Java IO: ByteArray和Filter
- Oracle数据库版本维护支持结束时间表以及数据库版本发行时间表
- python时间转绝对秒数_python时间时分秒与秒数的互相转换
- 磁盘阵列(RAID) 级别
- 第14章 学习scikit-learn文档
- EndNote 文献管理软件安装包
- Qt Quick综合实例之文件查看器
- 三分钟教你学Git(十二) 之 fast-forward
- lbj学习日记 06 一维数组和二维数组刷题课
- 链接与自定义函数名同名的库函数
- jQuery(一个JavaScript库)
- 圆跳动基础知识(几何公差)
- 2020北京国际金融安全论坛(二)
- 清华大学岂凡超:义原知识库的应用和扩充
- HTTP状态码1xx到5xx