public static ConditionResultArray combine(ArrayList<ArrayList<ConditionResult>> arrs) { ConditionResultArray arr = new ConditionResultArray(); for (int i = 0; i < arrs.size(); i++) { ConditionResult r = new ConditionResult(); for (int j = 0; j < arrs.get(i).size(); j++) { r.join(arrs.get(i).get(j)); } arr.add(r); } return arr; }
public ConditionResultArray generateAllPath() { ConditionResultArray paths = new ConditionResultArray(); // 将条件信息初始化 ArrayList<Integer> condition = new ArrayList<Integer>(); for (int i = 0; i < this.size(); i++) { int count = this.get(i).getCount(); for (int j = 0; j < count; j++) { condition.add(0); } } // 0,1的全排列 int count = (int) (Math.pow(2, condition.size())) - 1; int length = condition.size(); for (int i = 0; i <= count; i++) { System.out.println("-------------------------"); ConditionResult path = new ConditionResult(); String strPath = Integer.toString(i, 2); int strPathlen = strPath.length(); if (strPathlen < length) { StringBuffer s = new StringBuffer(); for (int temp = strPathlen; temp < length; temp++) { s.append("0"); } strPath = s + strPath; } // System.out.println("strPath:"+strPath); // int zero = condition.size() - strPath.length(); for (int j = 0; j < length; j++) { if (j < strPath.length()) { path.add(strPath.charAt(j) - 48); } else { path.add(0); } // System.out.println("path (i="+i+"j="+j+"):"+path); } paths.add(path); // System.out.println("path (i="+i+"):"+path); // System.out.println(Integer.toString(i, 2)); } System.out.println(paths); return paths; }
public ConditionResultArray generateCCPath() { ArrayList<ArrayList<ConditionResult>> arrs = new ArrayList<ArrayList<ConditionResult>>(); for (int i = 0; i < this.size(); i++) { ArrayList<ConditionResult> arr = new ArrayList<ConditionResult>(); ConditionResult pt = new ConditionResult(); ConditionResult pf = new ConditionResult(); int count = this.get(i).getCount(); for (int j = 0; j < count; j++) { pt.add(1); pf.add(0); } System.out.println("0000 pt : " + pt.toString()); System.out.println("0000 pf : " + pf.toString()); arr.add(pt); arr.add(pf); arrs.add(arr); } System.out.println("1111 arrs : " + arrs); arrs = ConditionTree.sort(arrs); System.out.println("2222 arrs : " + arrs); // Debug.println(arrs); ConditionResultArray pathlist = ConditionTree.combine(arrs); System.out.println("3333 arrs : " + arrs); // Debug.println(pathlist); return pathlist; }