笔试强训 Day 20:经此一役小红所向无敌、连续子数组最大和、非对称之美
Day 20经此一役小红所向无敌解题思路数学模拟代码实现importjava.util.*;publicclassMain{publicstaticvoidmain(String[]args){ScannerinnewScanner(System.in);longain.nextLong(),hin.nextLong();longbin.nextLong(),kin.nextLong();longcnt0;while(h0k0){cntab;h-b;k-a;}if(k0)cntb*10;elseif(h0)cnta*10;System.out.println(cnt);}}连续子数组最大和解题思路动态规划dp[i] 表示以 i 为子数组末尾的最大和看 dp[i-1] 是否大于0大于 0 则加到连续数组中从所有局部最大值中找到全局最大值代码实现importjava.util.*;importjava.io.*;publicclassMain{privatestaticReadinnewRead();privatestaticPrintWriteroutnewPrintWriter(newBufferedWriter(newOutputStreamWriter(System.out)));publicstaticvoidmain(String[]args)throwsIOException{intnin.nextInt();long[]numsnewlong[n];for(inti0;in;i)nums[i]in.nextLong();longretInteger.MIN_VALUE;long[]dpnewlong[n1];for(inti1;in;i){dp[i]Math.max(dp[i-1]nums[i-1],nums[i-1]);retMath.max(dp[i],ret);}out.println(ret);out.close();}}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());}longnextLong()throwsIOException{returnLong.parseLong(next());}}非对称之美解题思路如果整个字符串不是回文串答案就是n如果整个字符串是回文串如果所有字符都相同那么任意子串都是回文串答案是0否则答案是n - 1注意需要单独判断所有字符是否都相同原因如果原串不是回文最长非回文子串就是它自己。如果原串是回文但不全相同删掉首字符或尾字符后长度为n - 1的子串一定至少有一个不是回文。代码实现importjava.util.*;importjava.io.*;publicclassMain{publicstaticvoidmain(String[]args)throwsIOException{BufferedReaderbfnewBufferedReader(newInputStreamReader(System.in));char[]strbf.readLine().toCharArray();// 判断字符串是否回文booleancheckfalse;intnstr.length;for(intl0,rn-1;lr;){if(str[l]!str[r]){break;}else{if(lr||l1r)checktrue;}l;r--;}// 单独判断所有字符是否相等booleanallSametrue;for(inti0;in;i){if(i0str[i]!str[i-1]){allSamefalse;}}// 整个字符串不是回文串, 最长 nintretn;// 字符串所有字符都相同, 返回 0if(allSame)ret0;// 字符串有字符不同, 但是整个字符串是回文串, 最长 n-1elseif(!allSamecheck)retn-1;System.out.println(ret);}}

相关新闻