- 博客(6)
- 收藏
- 关注
原创 2019年javaA组迷宫
迷宫 之前2017年的迷宫只需要看能否走出迷宫,所以直接用的dfs+标记完成。这次的迷宫是需要得到最短路径和最短路径中的字典序最小,所以先采用dp和bfs得到迷宫中每一个能到达的点离终点的最短距离,然后再从起点按照每个点的最短距离为下一个点的最短距离加一的顺序搜索到下一个点,且搜索时结合按照字典序进行搜索。 代码: import java.util.ArrayDeque; import java.util.Scanner; public class _03平方拆分 { static int n = 3
2021-03-29 16:54:09
147
原创 2017javaA-8包子凑数
解题思路: 先分成两种大的情况: 凑不出来的数有无限多个,输出INF 凑不出来的数有有限多个,输出凑不出来的数目 假设有两种蒸笼,分别能装a,b个包子,分别需要x,y笼,来凑齐C个包子,一定有如下不定方程(ax+by=C)定理: 若a,b互质,那么x,y一定有解,且有无穷多个解。若要求x,y>=0,那么使得ax+by=C无解的C的个数有限,且Cmax = a*b-a-b 若a,b不互质,那么不能保证有解,也就是说有无限个C使得x,y无解 推而广之,对n种蒸笼的情况也成立。 所以推出
2021-03-26 11:23:42
140
原创 2017JavaA-7正则问题
看到这种计算题,我第一反应就是用栈迭代来做 思想也挺简单的:如果字符不为 ‘)’ 就放入栈中,如果字符为’)’ 就弹出与这个 ‘)’ 相匹配的表达式并计算,**因为这种最中心的子表达式本来就是首先应该被计算的 **。 子表达式计算方法为:依次弹出字符并计数,直到遇到’|'保存计数a,然后再继续弹出字符并计数,直到遇到 ‘(’ 保存计数b。然后取两个计数中最大值,向栈中继续添加最大值数个x。 这种做法优点在于没有那么绕,缺点在于只能解决在子表达式中只有一个’|'的情况(os:感觉这道题应该也是这个意思吧…)
2021-03-16 19:52:28
99
原创 2017JavaA-4方块分割
方块分割 这里的方块分割不是对方块进行处理,而是对分割线使用dfs+标记。这道题和第一题的迷宫,都使用了dfs+标记,但是采用了不同的返回值。 玄学总结:貌似:dfs函数肯定能得到结果,问该结果为多少的,返回值为void。dfs函数不一定能得到结果,判断是否得到的,返回值为boolean。 代码: public class GridDivision { static int[][] dxy = { {-1, 0},//左移一格 {1, 0}, //右移一格 {0, -1}, //下移一
2021-03-15 21:24:24
189
1
原创 2017JavaA组-2九数算式
题目: 分三步完成:第一步是全排列数字,第二步是将乘号放入不同的位置,第三步是判断得到的乘积是否是不同的数字。 第一步使用最熟悉的套路,没有重复元素的全排列数组来完成,和2014年的六角填数重复,该代码后为六角填数代码。然后在套路的输出那里执行第二步。 第二步我想的是依次对数字做10的倍数的乘积,每次有8种乘积方式,想实现方法的时候想的比较杂乱。而老师的做法也是这个思路,不过非常清晰:先分别调用两个数组转整数的函数,乘号的位置用传的参数不同(起始位置和结束位置不同)来表示。然后再将两个整数相乘。后面再自己
2021-03-15 15:49:42
162
原创 蓝桥杯省赛2017-Java-A-1-迷宫
2017-Java-A-1-迷宫 题目 标题:迷宫 X星球的一处迷宫游乐场建在某个小山坡上。 它是由10x10相互连通的小房间组成的。 房间的地板上写着一个很大的字母。 我们假设玩家是面朝上坡的方向站立,则: L表示走到左边的房间, R表示走到右边的房间, U表示走到上坡方向的房间, D表示走到下坡方向的房间。 X星球的居民有点懒,不愿意费力思考。 他们更喜欢玩运气类的游戏。这个游戏也是如此! 开始的时候,直升机把100名玩家放入一个个小房间内。 玩家一定要按照地上的字母移动。 迷宫地图如下: UDDLU
2021-03-13 12:18:37
224
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人