2016-07-06 3 views
-1

주어진 문자로부터 주어진 길이의 문자열을 생성하고 싶습니다. 문자 순서가 중요합니다. 또한 여러 스레드를 사용하여 문자를 생성하려고합니다. 나는이 알고리즘을 시도했습니다주어진 문자로부터 주어진 길이의 모든 문자열을 생성하십시오.

chars: a,b,c,d 
length: 1 
output: 
a 
b 
c 
d 
chars: a,b,c,d 
length: 2 
output: 
aa 
ab 
ac 
ad 
bb 
ba 
bc 
bd 
cc 
ca 
cb 
cd 
dd 
da 
db 
dc 

: 다음은 몇 가지 예입니다 참고 : 나는 다중 스레드를 사용하는 방법을 볼 수 없습니다 그러나 그것은 의사 코드

func generate(set, str, k){ 
    if (k == 0){ 
     print str; 
     return; 
    } 
    for (c in set) { 
     newString = str + c; 
     generate(set, newString, k-1); 
    } 
} 

입니다. 내가 읽은 다른 모든 알고리즘은 내 요구 사항을 충족시키지 못합니다.

+2

어떤 프로그래밍 언어로 제공됩니까? –

+1

질문에 올바르게 태그를 달고 연구하고 시도한 것을 보여주십시오. – dbmitch

+0

뇌간 같은 것이 아니라면 프로그래밍 언어는 신경 쓰지 않습니다. –

답변

0

이 알고리즘에는 멀티 스레딩을 사용할 필요가 없습니다. for 루프는 필요한 길이의 문자열을 생성하기위한 것입니다. java에서 코드는 다음과 같습니다.

import java.util.Random; 

public class RandomString2 { 

static String[] option = {"a","b","v","k"}; 

static String getRandomElement() 
{ 
    int idx = new Random().nextInt(option.length); 
    return option[idx]; 
} 

static String getRandomString(int length) 
{ 
    String result=""; 
    for(int i = 1; i<=length ; i++) 
    { 
     result += getRandomElement(); 
    } 
    return result; 
} 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    System.out.println(getRandomString(5)); // pass string length as parameter 

} 

} 
+0

알고리즘을 멀티 스레드로 만들고 싶습니다. 나는 많은 조합을 위해 그것을 사용할 계획이다. –

+0

나는 당신이 무엇을 계획하고 있는지 모른다. 그러나 다중 스레딩은 별도의 실행 경로로 사용됩니다. 나는 너의 특별한 질문에 대답했다. u는 코드를 게시하는 것이 좋습니다. –

+0

글쎄, 내가 멀티 스레딩 (multithreading)이 무엇인지 오해 한 것일 수도있다. 그러나 내가 원하는 것은 결과를 더 빠르게 계산할 수 있도록 여러 스레드/프로세서간에 계산을 나누는 것입니다. –

관련 문제