이 기사에서는 Java 직교 통합 알고리즘의 원칙 및 구현 방법에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
직교 제품 알고리즘의 Java 구현 :
(1) 루프에서, 한 컬럼만이 한 번에 하나의 셀 아래로 이동하는데, 이는 CounterIndex가 가리키는 열입니다.
(2) 열이 꼬리에 도달하면이 열의 인덱스가 0으로 재설정되고 CounterIndex는 이전 열을 가리 며, 이는 이전 열의 인덱스 중 하나를 추가하여 전달과 동일합니다.
(3) 마지막으로, 생성 된 행의 수는 루프를 종료하기 위해 제어됩니다.
공개 클래스 테스트 {private static string [] aa = { "aa1", "aa2"}; 개인 정적 문자열 [] bb = { "bb1", "bb2", "bb3"}; 개인 정적 문자열 [] CC = { "CC1", "CC2", "CC3", "CC4"}; 개인 정적 문자열 [] [] xyz = {aa, bb, cc}; 개인 정적 int counterIndex = xyz.length -1; 개인 정적 int [] 카운터 = {0, 0, 0}; public static void main (string [] args)은 예외를 {for (int i = 0; i <aa.length * bb.length * cc.length; i ++) {system.out.print (aa [counter [0]]; System.out.print ( "/t"); System.out.print (BB [Counter [1]]); System.out.print ( "/t"); System.out.print (CC [Counter [2]]; System.out.println (); 핸들(); }} public static void handle () {Counter [CounterIndex] ++; if (coun CounterIndex--; if (counterIndex> = 0) {handle (); } counterIndex = xyz.length -1; }}}출력 2*3*4 = 총 24 줄 :
AA1 BB1 CC1AA1 BB1 CC2AA1 BB1 CC3AA1 BB1 CC4AA1 BB2 CC1AA1 BB2 CC2AA1 BB2 CC3AA1 BB2 CC4AA1 BB3 CC1AA1 BB3 CC2AA1 BB3 CC3AA1 BB3 CC4A2 BB3. CC1AA2 BB1 CC2AA2 BB1 CC3AA2 BB1 CC4AA2 BB2 CC1AA2 BB2 CC2AA2 BB2 CC3AA2 BB2 CC4AA2 BB3 CC1AA2 BB3 CC3AA2 BB3 CC4
최근에 나는 직교 제품 알고리즘 요구 사항을 발견했습니다. 예를 들어, 전달 된 매개 변수는 "1,3,6,7 == 4,5,8,9 == 3,4 == 43,45,8,9 == 35,4"이며, 반환 된 목록은 [1,4,3,43,35] [1,4,3,43,4] [1,4,3,43,35] [1,4,3,45,35]와 같이 반환 된 목록입니다. 현재 아이디어는 다음과 같습니다.
import java.util.arraylist; import java.util.arrays; import java.util.list; public class descartestest { /** * n sets의 데카르트 제품을 얻으십시오 * * 설명 : "1,2,3 == 5,6 == 7,8" * 문자열 배열로 변환 : [1, 3], 6] a = [1, 2, 3] * b = [5, 6] * c = [7, 8] * 크기는 다음과 같습니다. a_length = 3, b_length = 2, c_length = 2, * 대상 목록의 총 크기는 다음과 같습니다. Totalsize = 3 * 2 * 2 = 12 * 각 서브 세트 A, B, C, 레코드의 숫자 = 각각의 수정 사항 *의 수는 * A에서, 루프 수 = 총 레코드 수/(요소 수*후속 세트의 직교 제품 수) = 12/(3*4) = 1 시간, 각 요소가 루프 당 인쇄 된 횟수 : 각 요소의 카르테시아 제품의 수, 각 요소의 카르테시아 제품 수, 총 레코드 수/(이후 세트의 수). 12/(2 * 2) = 3 배, 각 루프가 요소 당 인쇄 된 횟수 : 후속 세트의 카르테시아 제품 수 = 2 * 각 요소에 대해 C = 총 레코드 수/(요소 수 * 후속 세트의 데카르트 제품 수) = 12/(2 * 1) = 6 번, 각 요소의 수는 인쇄됩니다. 런닝 결과 : [[1, 2, 3], [5, 6], [7, 8]] 1,5,7, 1,5,8, 1,6,7, 1,6,8, 2,5,7, 2,5,8, 2,6,7, 2,6,8, 3,5,7, 3,5,8, 3,6,7, 3,6,8] 우리는 각각의 원소에서 볼 수 있습니다. 요소 당 루프 3 회, 요소 당 C 루프의 각 요소는 6 회, 매번 1 * * @param args */ public static void main (String [] args) {// todo 자동 생성 메소드 String str = "1,3,6,7 == 4,5,8,9 == 3,45,8,9 == 35,4"; List <string> result = descartes (str); System.out.println (결과); } @suppresswarnings ( "rawtypes") public static list <string> descartes (String str) {string [] list = str.split ( "=="); List <list> strs = new ArrayList <list> (); for (int i = 0; i <list.length; i ++) {strs.add (arrays.aslist (list [i] .split ( ",")); } system.out.println (strs); int total = 1; for (int i = 0; i <strs.size (); i ++) {Total*= strs.get (i) .size (); } string [] mysesult = new String [Total]; int now = 1; // 요소 당 인쇄 수 int itemloopnum = 1; // 요소 당 총 루프 수 int loopperitem = 1; for (int i = 0; i <strs.size (); i ++) {list temp = strs.get (i); 지금 = 지금*temp.size (); // 대상 배열의 인덱스 값은 int index = 0입니다. int currentsize = temp.size (); ItemLoopNum = Total/Now; loopperitem = total/(itemloopnum*currentsize); int myIndex = 0; for (int j = 0; // (int m = 0; m <itemloopnum; m ++) {mysesult [index] = (mysesult [index] == null? "": mysesult [index]+",")+(String) temp.get (myindex)) 색인 ++; } myIndex ++; }}} return arrays.aslist (mysesult); }}결과 출력 실행 :
[[1, 3, 6, 7], [4, 5, 8, 9], [3, 4], [43, 45, 8, 9], [35, 4]]
[1,4,3,43,35, 1,4,3,43,4, 1,4,3,45,35, 1,4,3,45,4, 1,4,3,8,4, 1,4,3,9,35, 1,4,4,4,4,4,4,4,4,4,4,4,4, 1,4,4,4,4,4,4, 1,4,4,8,35, 1,4,4,4,9,35, 1,4,4,4,4,4, 1,5,3,43,4, 1,5,3,43,4, 1,5,3,45, 1,5,3,43,4, 1,5,3,45, 1,5,45, 1,45, 1,5, 1,5,5,5, 1,5,5,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,45, 1,45, 1,5, 1,5, 1,5, 1,5, 1,5,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,3,45, 1,5,45, 1,45, 1,5, 1,5, 1,5, 1,5, 1,5,45, 1,5,3,45, 1,5,3,8,35, 1,5,3,8,4, 1,5,3,9,35, 1,5,3,3,4, 1,5,43,35, 1,5,43,4, 1,5,45,35, 1,5,45,4, 1,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, 1,5,4,9,35, 1,5,4,9,4, 1,8,3,43,35, 1,8,3,45, 1,8,3,45, 1,8,3,45, 1,8,3,45, 1,8,3,45, 1,8,3,8,4, 1,8,8,8,4, 1,8,4, 1,4,4,8,4,4,4,4,4,4,4,4,4,4, 1,8,3,9,35, 1,8,3,9,35, 1,8,3,9,35, 1,8,3,9,35, 1,8,3,9,35, 1,8,3,9,35, 1,8,35, 1,8,3,9,35, 1,8,9,35, 1,8,9,9,9,9,4, 1,8,4,43,35, 1,8,43,4, 1,8,4,45,35, 1,8,45,4, 1,8,4,8,4,4, 1,8,4,8,4, 1,8,4,9,35, 1,8,4,4,4, 1,9,4, 1,9,43,4, 4, 4, 4, 1,9,3,45, 1,9,3,45, 1,9,3,8,4, 1,9,9,9,4, 1,9,43,4, 1,9,45,35, 1,9,3,4, 1,9,9,9,4, 1,9,43,4, 1,9,43,4, 1,9,45, 1,9,45, 1,9,4,45,4, 3,4,4,4,35, 3,4,4,4,4,3,35, 3,4,3,4,3,4,4,4,4,3,4,4,4,3,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, 3,4,4,4,4,4,4,4,4,3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3 ,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,3,4,4,4,4,35, 3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,35, 3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,35, 3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,35, 3,5,3,43,35, 3,5,3,43,4, 3,5,45,35, 3,5,3,45,4, 3,5,3,8,4, 3,5,4, 3,4, 3,4, 3,4, 3,4, 3,4, 3,4, 3,4, 3,4, 3,35,45,35 3,5,3,9,4, 3,5,4,43,35, 3,5,4,43,4, 3,5,45,4, 3,5,4, 3,5,45,4, 3,5,4, 3,5,4,35, 3,5,4, 3,5,9,4, 3,8,43,4, 3,8,4, 3,43,43,43,43,4, 3,8,3,45, 3,8,3,43,4, 3,8,3,45, 3,8,3,45, 3,8,45, 3,8,3,45, 3,8,3,45, 3,45, 3,8,3,45, 3,8,3,45, 3,8,3,45, 4, 3,8,35, 3,8,3,8,4, 3,8,3,9,35, 3,8,3,9,4, 3,8,43,4, 3,8,43,4, 3,8,45,35, 3,8,45,4, 3,8,45,4, 3,8,8,4, 3,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,45,4, 3,9,3,43,4, 3,9,3,45, 3,9,3,45, 3,9,3,45, 3,9,3,45, 3,9,3,9,3,45, 3,9,3,9,9,9,9,9,3,9,9,9,3,9,9,9,9,3,9,3,9,3,9,9,9,9,9,9,9,3,3,3,9 , 3,9,3,9,9,9,9,9,9,3,9,3,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,9,9,3,3,9,9,3,3,9 , 3,9,3,9,9,9,9,9,9,3,9,3,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,9,9,3,3,9,9,3,3,9 , 3,9,3,9,9,9,9,9,9,3,9,3,9,9,9,9,9,3,9,3,9,3,9,9,9,9,9,9,9,3,3,9,9,3,3,9 3,9,4,43,35, 3,9,43,4, 3,9,4,45,35, 3,9,45,4, 3,9,4,8,35, 3,9,4,4,4,3,9,4,4,4,35, 3,9,4,4,4,35, 6,43,4, 6,4, 4,43,4, 4,4, 4,4, 4,4, 4,4, 4,4, 4,4, 4,4, 4,4, 4,4, 6,4,3,45, 6,4,3,45, 6,4,3,8,4, 6,4,3,9,4, 6,4,4,4,4,4,4,4,45,35, 6,4,4,4,4,4,4,4,35,35, 6,4,4,4,4,4,43,4, 6,4,4,45,35, 6,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, 4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4 6,4,4,8,35, 6,4,4,8,4,6,4,4,9,35, 6,4,4,9,35, 6,4,4,4,4,4,5,3,43,4,6,5,3,43,4,6,5,3,45, 6,5,45,4,4,4,4, 6,5,4,4, 6,4,4,4, 6,5,3,9,4, 6,5,43,4, 6,5,4,45,35, 6,5,4,4, 6,5,4,4,4,4,4,4,4,4,4,4,35, 6,5,4,4, 6,5,4,35, 6,5,4,4, 6,5,4,4, 6,5,4,8,35, 6,5,4,9,35, 6,5,4,9,35, 6,5,4,9,4, 6,8,3,43,35, 6,8,3,43,4, 6,8,35,35, 6,8,3,45,4, 6,8,3,8,4, 6,8,4,4, 6,8,3,8,4, 6,8,3,9,35, 6,8,3,9,4, 6,8,43,4, 6,8,45, 6,8,45, 6,8,4,9,35, 6,8,4,9,4, 6,9,3,43,4, 6,9,3,43,4, 6,9,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,45,45,9,9,9,9,9,9,9,9,9,9,9,9,9,9,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,45,45,9,9,9,9,9,9,9,9,9,9,9,9,9,9,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3,45, 6,9,3 6,9,3,8,35, 6,9,3,8,4, 6,9,9,9,35, 6,9,9,9,6,9,4,43,43,43,43,43,43,43,43,35, 6,9,4,45,35, 6,9,4,45,4, 6,9,4,4, 6,9,4,8,35, 6,9,4,4,4, 7,4,4,43,4, 7,4,45, 7,4,3,8,4, 7,4,4,8,4, 7,4,4,4,4, 7,4,43,4, 7,4,3,8,4, 7,4,3,8,4, 7,4,3,9,35, 7,4,3,9,4, 7,4,4,4,4,4, 7,4,3,9,35, 7,4,9,4, 7,4,43,35, 7,4,43,43,7,4,4,4,45,45,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, 7,4,4,4,4,4,4,4,8,35, 7,4,4,8,4,4,4,4,9,35, 7,4,4,9,35, 7,4,4,9,35, 7,4,4,4,4,4,7,5,43,4, 7,5,43,4, 7,5,45,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,45, 7,5,3,45, 7,5,3,8,4, 7,5,3,9,35, 7,5,43,4, 7,5,43,4, 7,5,43,4, 7,5,43,4, 7,5,4,45,35, 7,5,45,4, 7,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4, 7,5,4,8,4,7,4,4,4,7,5,4,9,35, 7,5,4,9,35, 7,5,4,4,4,4,8,3,43,4, 7,8,3,43,4, 7,8,3,45, 7,8,45, 7,8,3,3,3,45, 7,8,3,45, 7,8,3,8,4, 7,8,4,9,35, 7,8,4,9,35, 7,8,4,9,35, 7,8,43,4, 7,8,4,45, 7,8,45, 7,8,4,4,4,9,35, 7,8,4,9,35, 7,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,45, 7,8,4,9,35, 7,8,4,9,35, 7,8,4,4, 7,8,4,9,35, 7,8,4,9,4,4, 7,8,4,9,35, 7,8,4,4, 7,8,4,9,35, 7,8,4,9,4,4, 7,8,4,9,35, 7,8,4,9,4,4, 7,8,4,9,35, 7,8,4,9,4,4,4, 7,9,3,43,35, 7,9,3,43,4, 7,9,3,45,35, 7,9,3,45,4, 7,9,3,8,4, 7,9,3,4, 7,9,9,9,4, 7,9,9,4, 7,9,4,43,35, 7,9,4,45, 7,9,4,45, 7,9,4, 7,9,4,35, 7,9,4,9,4,4,4,4,9,4,4,4,9,4,4,9,4,4,9,4,9,9,9,4,4,4,4,4,4]
재귀 알고리즘 :
public static void fn (list <string []> list, string [] arr, String str) {// 반복 목록 <string> li = new ArrayList <string> (); for (int i = 0; i <list.size (); i ++) {// 현재 배열을 가져옵니다. for (string st : arr) {st = str + st; if (i <list.size () -1) {fn (list, list.get (i+1), st); } else if (i == list.size () -1) {li.add (st); }}}} for (int i = 0; i <li.size (); i ++) {system.out.println (li.get (i)); }}Java 알고리즘에 대한 자세한 내용은이 사이트에 관심이있는 독자들이 주제를 볼 수 있습니다. "Java 데이터 구조 및 알고리즘 자습서", "Java Operation Dom Node Tips 요약", "Java 파일 및 디렉토리 작동 팁 요약"및 "Java Cache Operation Tips의 요약"을 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.