您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 蓝桥杯java历年真题及答案整理(闭关一个月 呕心沥血整理出来的)
1蓝桥杯java历年真题及答案整理(闭关一个月,呕心沥血整理出来的)1.算法是这样的,如果给定N个不同字符,将这N个字符全排列,最终的结果将会是N!种。如:给定A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。packageQuestion1_9;importjava.util.Scanner;importjava.util.Vector;publicclassQuestion1{publicstaticlongcount=0;privatevoidfullPermutation(VectorCharactersourse,VectorCharacterresult){if(sourse.size()==0){for(inti=0;iresult.size();i++){System.out.print(result.elementAt(i));}System.out.print(\n);count++;return;}for(inti=0;isourse.size();i++){VectorCharactertsourse=newVectorCharacter(sourse);VectorCharactertresult=newVectorCharacter(result);tresult.add(sourse.elementAt(i));tsourse.remove(i);newQuestion1().fullPermutation(tsourse,tresult);}}publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);intn=scanner.nextInt();VectorCharactersourse=newVectorCharacter();VectorCharacterresult=newVectorCharacter();for(inti=0;in;i++){sourse.add((char)('A'+i));}2newQuestion1().fullPermutation(sourse,result);System.out.println(Question1.count);}}2.串的简单处理串的处理在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:1.把每个单词的首字母变为大写。2.把数字与字母之间用下划线字符(_)分开,使得更清晰3.把单词中间有多个空格的调整为1个空格。例如:用户输入:youandmewhatcpp2005program则程序输出:YouAndMeWhatCpp_2005_program用户输入:thisisa99cat则程序输出:ThisIsA99_cat我们假设:用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个单词间由1个或多个空格分隔。假设用户输入的串长度不超过200个字符。packageQuestion1_9;importjava.util.Scanner;importjava.util.Vector;publicclassQuestion2{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);Stringstring=scanner.nextLine();3VectorCharactervector=newVectorCharacter();for(inti=0;istring.length();i++){vector.add(string.charAt(i));}try{intindex=0;while(indexvector.size()){if(index==0&&vector.elementAt(index)='a'&&vector.elementAt(index)='z'){vector.set(index,(char)(vector.elementAt(index)-('a'-'A')));}elseif(vector.elementAt(index-1)==''&&vector.elementAt(index)==''){vector.remove(index);index--;}elseif(vector.elementAt(index-1)==''&&(vector.elementAt(index)='a'&&vector.elementAt(index)='z')){vector.set(index,(char)(vector.elementAt(index)-('a'-'A')));}elseif((vector.elementAt(index)='a'&&vector.elementAt(index)='z')&&(vector.elementAt(index-1)='0'&&vector.elementAt(index-1)='9')){vector.add(index,'_');index++;}elseif((vector.elementAt(index-1)='a'&&vector.elementAt(index-1)='z')&&(vector.elementAt(index)='0'&&vector.elementAt(index)='9')){vector.add(index,'_');index++;}index++;}for(inti=0;ivector.size();i++){System.out.print(vector.elementAt(i));}System.out.println();}catch(ArrayIndexOutOfBoundsExceptione){//TODO:handleexception}4}}运行结果:youandmewhatcpp2005programYouAndMeWhatCpp_2005_program3.猜算式看下面的算式:□□x□□=□□x□□□它表示:两个两位数相乘等于一个两位数乘以一个三位数。如果没有限定条件,这样的例子很多。但目前的限定是:这9个方块,表示1~9的9个数字,不包含0。该算式中1至9的每个数字出现且只出现一次!比如:46x79=23x15854x69=27x13854x93=27x186.....请编程,输出所有可能的情况!注意:左边的两个乘数交换算同一方案,不要重复输出!不同方案的输出顺序不重要packageQuestion1_9;importjava.util.ArrayList;importjava.util.List;importjava.util.Scanner;importjava.util.Vector;publicclassQuestion3{publicstaticlongcount=0;publicstaticListVectorCharacterfilteredNonRedundantResults;privatestaticbooleanisfilter(VectorCharacterresult){inta=(result.elementAt(0)-'0')*10+(result.elementAt(1)-'0');intb=(result.elementAt(2)-'0')*10+(result.elementAt(3)-'0');intc=(result.elementAt(4)-'0')*10+(result.elementAt(5)-'0');intd=(result.elementAt(6)-'0')*100+(result.elementAt(7)-'0')*10+(result.elementAt(8)-'0');if(a*b==c*d){returntrue;}returnfalse;5}publicstaticvoidprint(VectorCharactervector){System.out.printf(%c%cx%c%c=%c%cx%c%c%c,vector.elementAt(0),vector.elementAt(1),vector.elementAt(2),vector.elementAt(3),vector.elementAt(4),vector.elementAt(5),vector.elementAt(6),vector.elementAt(7),vector.elementAt(8));}privatestaticvoidfullPermutation(VectorCharactersourse,VectorCharacterresult){if(sourse.size()==0&&isfilter(result)){booleanexit=false;for(inti=0;ifilteredNonRedundantResults.size();i++){intra=(result.elementAt(0)-'0')*10+(result.elementAt(1)-'0');intrb=(result.elementAt(2)-'0')*10+(result.elementAt(3)-'0');intfa=(filteredNonRedundantResults.get(i).elementAt(0)-'0')*10+(filteredNonRedundantResults.get(i).elementAt(1)-'0');intfb=(filteredNonRedundantResults.get(i).elementAt(2)-'0')*10+(filteredNonRedundantResults.get(i).elementAt(3)-'0');if(ra==fb&&rb==fa){exit=true;break;}}if(exit==false){filteredNonRedundantResults.add(newVectorCharacter(result));}return;}for(inti=0;isourse.size();i++){result.add(sourse.elementAt(i));sourse.remove(i);fullPermutation(sourse,result);sourse.add(i,result.elementAt(result.size()-1));result.remove(result.size()-1);}}publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);intn=9;6VectorCharactersourse=newVectorCharacter();VectorCharacterresult=newVectorCharacter();for(inti=1;i=n;i++){sourse.add((char)('0'+i));}Question3.filteredNonRedundantResults=newArrayListVectorCharacter();Question3.fullPermutation(sourse,result);for(inti=0;iQuestion3.filteredNonRedundantResults.size();i++){Question3.print(Question3.filteredNonRedundantResults.ge
本文标题:蓝桥杯java历年真题及答案整理(闭关一个月 呕心沥血整理出来的)
链接地址:https://www.777doc.com/doc-6265279 .html