第十二届蓝桥杯省赛Java B、C组卡片题
第十二届蓝桥杯省赛Java B、C组卡片题
题目

这张图片是我在本科组中找到的, 题目相同, 可能蓝桥杯最令我自豪的就是这个题目了吧. 完成这个题目的过程耗时约30分钟. 真实感到无语, 内心异常紧张. 第二题中的10^9+7问题更是让我感到棘手. 刚开始使用int类型时得到的结果为零, 后来意识到可能存在问题并试图寻找解决方案. 尽管接触过BigInteger类但对其具体用法仍存在疑问. 尽管如此仍然未能有效解决问题, 对于杨辉三角问题则另辟蹊径选择了长整型(long)类型
import java.util.Arrays;
public class _12_卡片 {
/* * 思路整理
* 将卡牌数量转换成数组的值
* 卡牌上的值0-9转换成数组的长度
* 也差不多就是动态规划
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int[] arr = new int[10];
// 给数组赋值,都赋一个2021的值,代表每组卡牌数量
Arrays.fill(arr, 2021);
for (int i = 1; i < 9999; i++) {//从1开始组数
String string = Integer.toString(i);//将要组的数转成字符串
char[] ch = new char[string.length()];//创建一个字符数组
ch = string.toCharArray();//将字符串转成字符数组,方面后面取字符,字符也就等于是卡牌
for (int j = 0; j < ch.length; j++) {//看这个数要用到什么卡牌
// 稍微注意一点,这里字符数组对应的值虽然在我们看来是数字,但是它是ASCII码值所以减48对应的0的值
arr[(ch[j])-48] = arr[(ch[j])-48]-1;//将卡牌上对应的数在数组中减一
}
// 每组完一个数后我们检查这个数是否将一组卡牌用完
for (int k = 0; k < arr.length; k++) {
if (arr[k]==0) {
System.out.println("0对应的"+i);
}
/* * 这里我担心可以有一个数恰好用完一组卡牌且另外有一组卡牌透支了,
* 所以我设置-1这个判断是想看一下有没有这种情况发生
*/
if (arr[k]==-1) {
System.out.println("-1对应的"+i);
}
}
}
}
}
AI写代码
最后给大家一点对于如何准备蓝桥杯的建议
一些常用的方法名和函数名要记住,在考试中电脑不像普通的电脑会提示帮助,在没有提示的情况下就需要我们自己敲出完整的代码例如Math.pow()这样的函数调用方法也是必须直接输入而不能依赖电脑的帮助。
考试时一定要保持冷静不要过度紧张尽量避免过度紧张尽量把精力集中在当前的问题上。
遇到不会的题目或者思路不清的时候不要犹豫先解决那些容易把握的问题积累信心提升答题效率。
比如今年JavaC组有个看起来简单的砝码问题但一开始却难以找到解题思路导致花费大量时间思考最终选择性放弃投入大量时间后仍然无法解决这个问题影响了整体发挥。
在编程练习中要注意掌握每道题的核心解题思路并灵活运用相关的算法技巧比如递归和动态规划等思维方式这对于提高解题效率具有重要意义。
刚开始学习编程的时候可能会遇到困难但只要坚持下去通过不断实践逐步掌握各种编程技巧就能取得进步。
除了这些之外也没有什么可说的了 我所做的都是基础题 遇到难度较大的题目时我就无法解答出来 填空题中余数为10^{7}-1的情况出现错误 还有涉及杨辉三角形的问题我已经解决 但计算时间的问题未能完成 考试中有一道类似的题目当时我还做过 但这次却没能解答出来 出来后同学给我讲解后我才恍然大悟 这次考试经历确实让人感到沮丧 自己对自己的能力还是有些怀疑 平时遇到有一定难度的问题还能应对 但在关键时刻思路却会出现短路 这样的结果实在令人遗憾 考试结束后我会更加注重平时的学习积累 加油努力 在未来的日子里希望大家都能够坚持不懈地前进 不要放弃自己的学习脚步 每个人都在努力奔跑 我也一样加油吧
