java竞赛题 用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234等,要求:"4"不能在第三位,"3"与"5"不能相连. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 没人答,哈哈40给我好了 public static void main(String[] args) { int[] a = {1,2,2,3,4,5}; TreeMap<String,String> tm = new TreeMap<String,String>(); f(a,0,"",tm); Iterator<String> it = tm.keySet().iterator(); while(it.hasNext()) { System.out.println(it.next()); } } public static void f(int[] a,int n,String str,TreeMap<String,String> tm) { if(n==a.length-1) { String str_2 = str+a[n]; if(!str_2.matches("\\d*?35\\d*?|\\d*?53\\d*?")&&!str_2.matches("[\\d]{3}4\\d+")) { tm.put(str_2, str_2); } } else { for(int i = n;i<a.length;i++) { int test = a[n]; a[n] = a[i]; a[i] = test; String str_2 = str+a[n]; f(a,n+1,str_2,tm); a[i] = a[n]; a[n] = test; } } } 手快弄错题意再发: public static void main(String[] args) { int[] a = {1,2,2,3,4,5}; TreeMap<String,String> tm = new TreeMap<String,String>(); f(a,0,"",tm); Iterator<String> it = tm.keySet().iterator(); while(it.hasNext()) { System.out.println(it.next()); } } public static void f(int[] a,int n,String str,TreeMap<String,String> tm) { if(n==a.length-1) { String str_2 = str+a[n]; if(!str_2.matches("\\d*?35\\d*?|\\d*?53\\d*?")&&!str_2.matches("[\\d]{2}4\\d+")) { tm.put(str_2, str_2); } } else { for(int i = n;i<a.length;i++) { int test = a[n]; a[n] = a[i]; a[i] = test; String str_2 = str+a[n]; f(a,n+1,str_2,tm); a[i] = a[n]; a[n] = test; } } } TreeMap有自动过滤重复值的特性,每次获得一个新的字符串时用正则表达式式检验是否符合"4"在第三位,"3"与"5"相连。2个条件都否时,就用TreeMap保存。核心的排列组合算法就是非常经典的了,网上有一堆说明。 通讯协议中数据问题 求一个正则表达式。 【求】File 类异常处理一个不解的问题 jsp连接数据库mysql问题 点击菜单列表项在JFrame上加载JPanel的事件处理代码 关于JSP中错误页面跳转的问题 为什么JSplitPane只能往左移,不能往右移 java能否做网络游戏外挂 怎样得到jtree中一个节点的标签值? Applet中this.add(new Label("kk"));只能在init()事件中有效吗? bat字符串替换问题 html中嵌入javaapplet,在html中点击按钮,调用javaapplet中的方法来加载XML,为什么SAXReader向下不执行
int[] a = {1,2,2,3,4,5};
TreeMap<String,String> tm = new TreeMap<String,String>();
f(a,0,"",tm);
Iterator<String> it = tm.keySet().iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
public static void f(int[] a,int n,String str,TreeMap<String,String> tm) {
if(n==a.length-1) {
String str_2 = str+a[n];
if(!str_2.matches("\\d*?35\\d*?|\\d*?53\\d*?")&&!str_2.matches("[\\d]{3}4\\d+")) {
tm.put(str_2, str_2);
}
}
else {
for(int i = n;i<a.length;i++) {
int test = a[n];
a[n] = a[i];
a[i] = test;
String str_2 = str+a[n];
f(a,n+1,str_2,tm);
a[i] = a[n];
a[n] = test;
}
}
}
int[] a = {1,2,2,3,4,5};
TreeMap<String,String> tm = new TreeMap<String,String>();
f(a,0,"",tm);
Iterator<String> it = tm.keySet().iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
}
public static void f(int[] a,int n,String str,TreeMap<String,String> tm) {
if(n==a.length-1) {
String str_2 = str+a[n];
if(!str_2.matches("\\d*?35\\d*?|\\d*?53\\d*?")&&!str_2.matches("[\\d]{2}4\\d+")) {
tm.put(str_2, str_2);
}
}
else {
for(int i = n;i<a.length;i++) {
int test = a[n];
a[n] = a[i];
a[i] = test;
String str_2 = str+a[n];
f(a,n+1,str_2,tm);
a[i] = a[n];
a[n] = test;
}
}
}