笔试强训 Day 19:小易的升级之路、礼物的最大价值、对称之美
小易的升级之路解题思路处理题目输入先读第一组 n然后在循环中消耗 n 行 token再判断是否有下一个 token计算最大公约数在于辗转相除法48 ÷ 18 2 余 12 → 转为求 gcd(18, 12) 18 ÷ 12 1 余 6 → 转为求 gcd(12, 6) 12 ÷ 6 2 余 0 → 余数为0除数 6 即为最大公约数。代码实现importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){ScannerscnewScanner(System.in);while(sc.hasNext()){intnsc.nextInt(),asc.nextInt();int[]bnewint[n];for(inti0;in;i)b[i]sc.nextInt();System.out.println(count(a,b));}}privatestaticintcount(inta,int[]b){intcnta;for(inti0;ib.length;i){intnumb[i];if(cntb[i])cntb[i];else{intxnum,ycnt;while(y!0){inttmpx%y;xy;ytmp;}cntx;}}returncnt;}}礼物的最大价值解题思路动态规划代码实现importjava.util.*;publicclassSolution{publicintmaxValue(int[][]grid){intmgrid.length,ngrid[0].length;int[][]dpnewint[m1][n1];for(inti1;im;i){for(intj1;jn;j){dp[i][j]Math.max(dp[i-1][j],dp[i][j-1])grid[i-1][j-1];}}returndp[m][n];}}对称之美解题思路难在理解题目给定一组字符串需要从每个字符串中各选择一个字符并按原来的行顺序组成一个新的字符串。判断是否存在一种选择方式使得这个新字符串是回文串。3 abc de cfa cdc Yes --- n 3 ab c de .... No代码实现importjava.util.*;importjava.io.*;publicclassMain{privatestaticReadinnewRead();privatestaticPrintWriteroutnewPrintWriter(newBufferedWriter(newOutputStreamWriter(System.out)));publicstaticvoidmain(String[]args)throwsIOException{inttin.nextInt();for(inti0;it;i){intnin.nextInt();String[]strsnewString[n];for(intj0;jn;j){strs[j]in.next();}out.println(check(strs));}out.close();}privatestaticStringcheck(String[]str){booleanflagtrue;for(intl0,rstr.length-1;lr;){int[]hashnewint[26];booleantFlagfalse;for(charch:str[l].toCharArray()){hash[ch-a];}for(charch:str[r].toCharArray()){tFlag|(hash[ch-a]0);}flagtFlag;if(!flag){returnNo;}l;r--;}returnYes;}}classRead{StringTokenizerstnewStringTokenizer();BufferedReaderbfnewBufferedReader(newInputStreamReader(System.in));Stringnext()throwsIOException{if(!st.hasMoreTokens()){Stringlinebf.readLine();if(linenull)returnnull;stnewStringTokenizer(line);}returnst.nextToken();}intnextInt()throwsIOException{returnInteger.parseInt(next());}}