1、穷举法 2、枚举法 3、动态规划 4、回溯法 5、图论 6、深度优先搜索(DFS) 7、广度优先搜索(BFS )
8、二叉树 9、递归 10、分治法、矩阵法 11、排列组合 12、素数、质数、水仙花数 13、欧几里得定理gcd
14、求最大公约数、最小公倍数 15、海伦公式(求三角形面积) 16、博弈论 17、贪心 18、二分查找法
19、hash表 20、日期计算 21、矩形快速幂 22、树形DP 23、最短路径 24、最小生成树
1、结果填空题:首先判断是否可以借助日历、计算器、WPS、txt文本、Notepad或者数学方法等工具进行快速求解,
最后再选择用Eclipse代码暴力破解。
2、代码填空题:先通过多组数据样本填空测试输出结果是什么,尤其是方法返回的结果。
如果经过多组数据测试答案输出结果都正确,则会大大地减少了读题、解题过程的时间。
3、毕竟之前编程压轴题更倾向于乱搞出奇迹。
4、敲代码之前先把所有题目和分数都大致过一遍,先选简单的或者分数很高但很有把握的写,再选其他题目。
5、比较难的题目可以先写伪代码,把思路搞清楚了再码往往比上来直接撸代码来得高效。
6、蓝桥杯考试时间虽然不短,但是题量很大。因此,时间的合理分配显得非常重要。
7、蓝桥杯答题的分数看的是测试数据的通过率,所有务必把能过的都码上去。
1、输入:static Scannner sc = new Scanenr(System.in);
2、换行:sc.nextLine 整数sc.nextInt 小数sc.nextDouble
3、一维数组输出:java.util.Arrays.toString(A); (A为一维数组)
3、多维数组输出:java.util.Arrays.deepToString(B); (B为多维数组)
4、两数字交换: int temp=a1; a1=a2; a2=temp;
5、一维数组长度:int A[] = {1,2,3,4,5} A.length=5
6、二维数组长度:int[][] A = new int[3][4] A.length=3 A[0].length=4
7、数组长度总结:A.length 表示有多少行 A[i].length表示第行列有多少列
7、break和continue:break结束整个循环体,continue结束单个循环。
8、基本数据类型转大数:Bigdecimal c = Bigdecimal.value(X);
9、强制转换:long b = (long)a;
10、字符串问题:String类型定义的是字符串,char[]定义的是字符数组
11、String转化为char:char[] c1 = s1.toCharArrays(s1);
12、字符串分割:分割的字符串必须用字符串数组存储String[] str = s.split("/");
13、强制结束进程:system.exit(0);
14、int和Integer:自动装箱:Integer.valueOf(int i),自动拆箱:i.intValue()
15、对象类比较用equals,地址比较用==。
16、定义integer类,-128~127存在缓存中,其他的需要创建一个新的Integer对象
17、定义数字变量,int比Integer快。
18、定义当前时间:double startTime = System.currentTimeMillis();
19、声明boolean数组:Boolean Bool[] = new boolean[xx];
20、构造器:public 类名(){} (构造方法没有返回值, 构造方法:一般用于给对象赋初始值)
21、this关键字:(1)指代当前对象(2)指代当前类(3)指代构造方法(只能放在首行)
22、求最大公约数和最小公倍数时需要求绝对值:Math.abs();
23、java输出换行:System.out.print("\n"+......);
24、java字符串和字符数组的转换
(1)String字符串转化为字符数组:String->char[] char[] a1 = s1.toCharArrays();
(2)char[]字符数组转化为字符串:char[]->String String[] s1 = String.valueOf(a1);
(2)char[]字符数组转化为字符串:char[]->String String s1 = new String(a1);
(3)String查找字符串中的一个字符:char a = String.charAt(index);
(3)String查找字符串中的一个字符:char a = String.codePointAt(index);
(4)String字符串转换成大写:String up = s1.toUppercase();
(5)String字符串转化为小写:String low = s1.toLowercase();
(6)char字符转化成大写:String upch = a1.toString().toLowercase();
(7)char字符转化成小写:String lowch = a1.toString().toUppercase();
(8)String字符串替换:String rep = s1replace(oldChar, newChar);
(9)String字符串字符char的第一次索引:int a = s1.indexOf(String str);
(10)String字符串字符char的最后一次索引:int a = s1.lastIndexOf();
(11)String字符串的子字符串:String sub = s1.substring(beginIndex);
(11)String字符串的子字符串:String sub = s1.substring(beginIndex,endIndex);
(12)String字符串删掉最后一个字符:s = s.subString(0,s.length-1);
(13)BigInteger大数操作:
(1)定义:BigInteger a,b,c;
(2)输入:a = sc.nextBigInteger();
(3)加法:c = a.add(b);
(4)减法:c = a.subtract(b);
(5)乘法:c = a.multiply(b);
(6)除法:c = a.divide(b);
(7)取余:c = a.remainder(b);
(14)二维数组克隆:
(1)copy = c.clone(); //直接复制全部
(2)System.arraycopy(c,0,copy,0,N); //最底层,复制c到copy,从0-N
(3)copy = Arrays.copyOf(c,N); //复制c到copy,复制的长度为N
(4)copy = Arrays.copyOfRange(c,0,N);//复制c到copy,从c的第0到N个复制
效率:System.arraycopy > Arrays.copyOf > for循环 > clone
25、Java线程安全问题
26、字符串切割再赋值操作:
static int year,month,day,Mon;
static Scanner sc = new Scanner(System.in);
static String str = sc.next();
String[] s = str.split("/");
year = Integer.valueOf(s[0]);
month = Integer.valueOf(s[1]);
day = Integer.valueOf(s[2]);
1、debug调适
F5:跳入方法
F6:向下逐行调试
F7:跳出方法
F8:直接跳转到下一个断点
2、Ctrl+Q 跳回上一操作处
3、Ctrl+D快速删除光标行
4、Ctrl+O查看当前类的所有方法