1、1蓝桥杯 java 历年真题及答案整理(参考网络资料整理出来)1.字符排序算法是这样的,如果给定N个不同字符,将这N 个字符全排列,最终的结果将会是N! 种。如:给定 A、B、C三个不同的字符,则结果为:ABC、ACB、BAC、BCA、CAB、CBA一共3!=3*2=6种情况。package Question1_9;import java.util.Scanner;import java.util.Vector;public class Question1 public static long count=0;private void fullPermutation(Vectorsourse,
2、 Vector result) if(sourse.size()=0)for (int i = 0; i tsourse=new Vector(sourse);Vectortresult=new Vector(result);tresult.add(sourse.elementAt(i);tsourse.remove(i);new Question1().fullPermutation(tsourse, tresult);public static void main(String args) Scanner scanner=new Scanner(System.in);int n=scann
3、er.nextInt();Vector sourse=new Vector();Vector result=new Vector();for (int i = 0; i lis) for(char x:s.toCharArray() lis.add(x); / 为方便操作 将 sets 转 lis public static void convert(List lis,Set sets) Iterator iter = sets.iterator(); while(iter.hasNext() lis.add(iter.next(); / 检测符合条件的元素组合 public static v
4、oid check(Set sets) List lis = new ArrayList(); convert(lis,sets); / 为方便操作 将 sets 转 lis StringBuffer sb = new StringBuffer(); for(int i=0;i sets = new LinkedHashSet(); removeDuplicate(s,sets); / 去掉重复元素,放入 lis check(sets); / 检测符合条件的元素组合 运行结果:输入串(不大于 30 个字符) 。 abcd abc abd acd bcd 2.串的简单处理串的处理在实际的开发工作
5、中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:1. 把每个单词的首字母变为大写。2. 把数字与字母之间用下划线字符(_)分开,使得更清晰3. 把单词中间有多个空格的调整为1个空格。例如:用户输入:you and me what cpp2005program则程序输出:You And Me What Cpp_2005_program用户输入:this is a 99cat则程序输出:This Is A 99_cat我们假设:用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个单词间由1个或多个空格分隔。假设用户输入的串长度不超过200
6、个字符。package Question1_9;import java.util.Scanner;import java.util.Vector;public class Question2 public static void main(String args) Scanner scanner=new Scanner(System.in);String string=scanner.nextLine();Vectorvector=new Vector();for (int i = 0; i =aprivate static boolean isfilter(Vector result) in
7、t a=(result.elementAt(0)-0)*10+(result.elementAt(1)-0);int b=(result.elementAt(2)-0)*10+(result.elementAt(3)-0);int c=(result.elementAt(4)-0)*10+(result.elementAt(5)-0);int d=(result.elementAt(6)-0)*100+(result.elementAt(7)-0)*10+(result.elementAt(8)-0);if(a*b=c*d)return true;return false;public sta
8、tic void print(Vectorvector) System.out.printf(“%c%c x %c%c = %c%c x %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);private static void fullPermutation(Vectors
9、ourse, Vector result) if(sourse.size()=0for (int i = 0; i (result);return;for (int i = 0; i sourse=new Vector();Vector result=new Vector();for (int i = 1; i ();Question3.fullPermutation(sourse, result);for (int i = 0; i lis = new ArrayList(); / 结果 1(有重复的结果) static List lis2 = new ArrayList(); / 结果 2
10、(去重复后的结果) / 初始化数组为 19 public static void init(int n) for(int i=0;i=end) check(n); / 检测结果,符合条件的输出 return ; else for(int i=start;i=end;i+) int t = nstart; / 交换元素 nstart = ni; ni = t; / 递归全排列 allSort(n,start+1,end); t = nstart; / 还原元素 nstart = ni; ni = t; public static void fun() int n = new int9; init
11、(n); / 初始化数组为 19 allSort(n,0,n.length-1); / 全排列测试 removeDuplicate(); / 去除重复元素 public static void main(String args) fun(); / print(); / 输出结果 运行结果:46 x 79 = 23 x 158 54 x 69 = 27 x 138 54 x 93 = 27 x 186 58 x 67 = 29 x 134 58 x 69 = 23 x 174 58 x 73 = 29 x 146 58 x 96 = 32 x 174 63 x 74 = 18 x 259 64 x 79 = 32 x 158 73 x 96 = 12 x 584 76 x 98 = 14 x 532