2013-08-06 4 views
0

이 질문이 수학 섹션 또는이 하나에 대한 것이 확실하지 않지만 프로그래밍 방식 솔루션 (.NET에서)이 필요하므로 여기에 질문을 올리겠습니다.. NET에서 배열의 조합

아래 예제와 같이 출력되는 가변 길이의 배열이 있습니다. 인터넷 용

[] 도착 = {1,2}은 다음과 같이 될 것이다 :

[1,2], [1], [2], 인터넷 용

[] = {1 도착 2, 3], [3,1], [1], [2], [3], [1,2,3] 3] int와

[] 도착 = {1,2,3,4}는 같은 것이다

[1,2], [2,3], [3,4], [4, 1], [1], [2], [3], [4], [1,2,3], [2,3,4] 4,1], [4,1,2], [1,2,3,4]

for int [] arr = {1,2,3,4,5} .....

나는 지금까지 패턴을 볼 수 있어야한다고 생각한다.

프로그래밍 방식으로 이것을 해결하는 방법이나 다른 사람들이 생각할 수있는 관련 수학 공식이 있다면 어떤 힌트를 제공하나요?

감사합니다,

답변

2

나는 그것이 프로그램으로 꽤 쓸모 생각하고 연습으로 당신은 쓸모 후 스스로하지 않으면. 하지만 모두에게 물어 보니 ...

int[] arr = new int[] { 1, 2, 3 }; 

// How much elements in each permutation 
for (int i = 1; i <= arr.Length; i++) 
{ 
    // Starting point of the permutation 
    for (int j = 0; j < arr.Length; j++) 
    { 
     Console.Write("["); 

     // Single element of the permutation 
     for (int k = 0; k < i; k++) 
     { 
      if (k != 0) 
      { 
       Console.Write(", "); 
      } 

      Console.Write("{0}", arr[(j + k) % arr.Length]); 
     } 

     Console.WriteLine("]"); 

     // Single cycle for last permutation of length arr.Length 
     if (i == arr.Length) 
     { 
      break; 
     } 
    } 
} 
+0

고마워요. 레거시 코드에 대한 임시 수정 사항 인 바보 같은 알고리즘을 연습하지 않습니다. 왜 이런 식으로해야하는지 잘 모르겠지만 작동합니다. – daehaai