1、2、2、3、4、5六个数字,请打印出所有6位的排列,要求:4不能在第三个,3和5不能相邻!
解决方案 »
- Preferences的用法,不懂啊。在线等
- JFilechooser的两个set方法不懂
- java 内部类overload 问题 ,麻烦各位看看这里是不是 覆盖 基类的AA类?
- 送分求: StringTokenizer类多使用在什么场合?
- 学习交流。进来留下QQ号
- 能不能用Socket类来实现广播,怎么实现发送和接收
- 大家来帮忙啊,同一包中的类之间相互调用出现问题!!(在线等待)
- Java applet 如何嵌入ppt 啊
- 找不到applet所需的类!!!!!!!!!!!!!!!!!
- 谁会 加权平均公式,只能加这么多了
- 用jfreechart画曲线图的问题
- 为什么server无法正确读取message sequence number并且显示?谢谢!
// 当前固定部分
private String CurFixPart; private String PreGenNum; public static void main(String[] args) {
Test3 t = new Test3();
t.GenControll("122345");
} // 调整字符串s位置pos字符到最前
private String shift(String s, int pos) {
String newStr;
if (s.length() > pos + 1)
newStr = s.substring(pos, pos + 1) + s.substring(0, pos)
+ s.substring(pos + 1);
else
newStr = s.substring(pos) + s.substring(0, pos);
return newStr;
} protected int Validate(String newNum) {
String newGenNum = CurFixPart + newNum;
if (Integer.valueOf(newGenNum) <= Integer.valueOf(PreGenNum))
return 0;
if (newGenNum.substring(2, 3).equals("4")
|| (newGenNum.indexOf("35") != -1)
|| (newGenNum.indexOf("53") != -1))
return 0; PreGenNum = newGenNum;
System.out.println(newGenNum);
return 0;
} public void GenControll(String Base) {
PreGenNum = "0";
CurFixPart = "";
GenNext(Base, 0);
} void GenNext(String varPart, int curPos) {
if (varPart.length() == 2) {
Validate(varPart);
Validate(shift(varPart, 1));
return;
}
// Next Layer
String newGen = shift(varPart, curPos);
String SavedFixPart = CurFixPart;
CurFixPart = CurFixPart + newGen.substring(0, 1);
GenNext(newGen.substring(1), 0);
CurFixPart = SavedFixPart;
// 同层递增
if (curPos == varPart.length() - 1)
return;
GenNext(varPart, curPos + 1);
}
}
看来csdn可以开个IT婚介所了。。
package org.idcn.math.test;public class Test1 {
private int[] numbers = new int[] { 1, 2, 2, 3, 4, 5 };
public int n;
private String lastResult = ""; private boolean validate(String s) {
if (s.compareTo(lastResult) <= 0)
return false;
if (s.charAt(2) == '4')
return false;
if (s.indexOf("35") >= 0 || s.indexOf("53") >= 0)
return false;
return true;
} public void list(String index, String result) {
for (int i = 0; i < numbers.length; i++) {
if (index.indexOf(i + 48) < 0) {
String s = result + String.valueOf(numbers[i]);
if (s.length() == numbers.length) {
if (validate(s)) {
System.out.println(s);
lastResult = s;
n++;
}
break;
}
list(index + String.valueOf(i), s);
}
}
} public static void main(String[] args) {
Test1 t = new Test1();
t.list("", "");
System.out.println("总数:" + t.n);
}
}