2013-06-06 3 views
1

요약하면 다른 값을 포함하는 다른 세트를 기반으로 가능한 모든 변형을 생성하는 Java/C#의 방법을 찾고 있습니다. 예를 들어 : 우리는 10 개 세트서로 다른 값을 포함하는 다른 세트를 기반으로 변형을 생성하는 알고리즘

이있을 수 있습니다 동사

-Loves, hates, knows 

그리고 단지 예로서 프로그래밍 언어의 세 번째 세트 만의

-Max, Jack, Roger 

두 번째 세트 : 우리가 이름으로 설정 한 말할 수

-Java, C#, Python, Visual Basic, C++ 

내가 원하는 것은 모든 속성을 포함하는 모든 변형을 생성하고 모든 값을 갖는 예를 들어 출력해야합니다.

Max loves Java 
Jack loves Java 
Roger loves Java 
Max hates Java 
Jack hates Java 
Roger hates Java 
Max knows Java 
Jack knows Java 
Roger knows Java 
Max loves C# 
Jack loves C# 
Roger loves C# 
and so on... this will generate 45 variations if I am not wrong at the end 

아무도 도와 줄 수 있습니까? 서로 다른 크기, 색상 및 재질을 가진 의류 매장에서 다양한 변형 제품을 만들고 모든 유사 콘텐츠를 원한다면 비슷한 예가 더 쉽습니다.

+1

http://blogs.msdn.com/b/ericlippert/archive/2010/06/28/computing-a-cartesian-product-with-linq.aspx 및 링크 seq. – AakashM

+3

Cartesian 제품을 검색 할 때 SO가 너무 많습니다. 좋아하는 속임수를 선택하십시오 :) – AakashM

+5

단순히 각 세트를 반복하고 문자열을 추가 하시겠습니까? (자바, C#) print i + j + k;에서 k를 위해 (사랑, 증오)에서 j를 위해 (Max, Jack, Roger) –

답변

4
String[] names={"Max", "Jack", "Roger"}; 
String[] verbs={"Loves", "hates", "knows"}; 
String[] languages={"Java", "C#", "Python", "Visual Basic", "C++"}; 
for(String name:names) 
    for(String verb:verbs) 
     for(String language:languages) 
     System.out.println(name+" "+verb+" "+language); 

편집 :

아, 난을 참조하십시오. 나는 그 질문을 오해했다. 이 문제를 해결하기 위해 재귀 마법을 사용할 수 있습니다. 이 당신이 원하는 무엇인가 :

public static void main(String[] args) { 
    String[][] sets={ 
      {"Max", "Jack", "Roger"}, 
      {"Loves", "hates", "knows"}, 
      {"Java", "C#", "Python", "Visual Basic", "C++"}, 
    }; 
    combine(sets,0,""); 
} 

public static void combine(String[][] list,int index,String upperText) 
{ 
    if(index==list.length)return; 
    for(String i:list[index]){ 
     combine(list,index+1,upperText+i); 
     if(index==list.length-1){ 
      System.out.println(upperText+i); 
     } 
    } 
} 
+0

그것은 조금 더 까다롭기 만하다. for 루프의 양은 고정되어 있지 않았다. 나는 "세트"의 양은 3이 아니며 반향을 원하지 않았다는 것을 의미한다. 그러나 어쨌든 나는 정확하게 그 물음에 감사한다. – JOKe

+0

@ JOKe 나는 대답을 업데이트했다. – SteveL

+0

그래, 내가 할 수 재귀에 동의 :) 나는 또한 C# 에서이 답변을 발견뿐만 아니라 C#을 사용하여 좋은 해결책을 보여줍니다 :) : http://stackoverflow.com/questions/545703/combination-of-listlistint 어쨌든 재귀로 이미 해 봤습니다 :) – JOKe

관련 문제