문제

아래와 같은 배열이 있습니다

int[] array = new array[n];// n may be 2,3,4

n = 4에 대한 예

int[] array = new array[4];

array[0] = 2;
array[1] = 4;
array[2] = 6;
array[3] = 8;

LINQ를 사용하지 않고이 배열의 반복되지 않은 조합을 어떻게 계산 하는가?

2,4,6,8
2,4,8,6
2,8,6,4
2,6,4,6
8,6,4,2
2,4,6,8
.......
.......
.......

도움이 되었습니까?

해결책

여기에 있습니다 꽤 유연한 C# 구현 반복자 사용.

다른 팁

글쎄, 당신이 반복되지 않은 모든 조합을 찾고 있다는 것을 감안할 때, 그것은 n이있을 것임을 의미합니다! 그러한 조합 ... (따라서, 당신의 경우, n! = 4! = 24 그러한 조합).

내가 이것을 게시하는 동안 Dommer는 좋은 구현을 지적했습니다.

N! 순열이 있기 때문에 큰 값에 대해서는 실제로 느려질 것임을 경고합니다.

세계의 두 가지 가능한 상태에 대해 생각하여 그것이 어떤 빛을 흘리는지 알아보십시오.

1) 배열에는 속임수가 없습니다 (즉, 배열의 각 숫자는 고유합니다). 이 경우 가능한 수 순열 거기 있어요?

2) 배열에는 하나의 듀페가 있습니다. 따라서 1 부에서 계산 한 순열의 수 중에서 얼마나 많은 사람들이 복제물입니까?

흠, 단순성을 위해 세 가지 요소 배열을 가져 가자

1,3,5는 얼마나 많은 순열이 있습니까?

1,3,5

1,5,3

3,1,5

3,5,1

5,1,3

5,3,1

그래서 6 개의 순열

목록을 1,5,5로 변경하면 어떻게됩니까?

우리는 얻는다

1,5,5

5,1,5

5,5,1

당신에게 내 질문은 어떻게 될 것입니다, 당신은 어떻게 팩토리 노트를 통해 이것을 표현할 수 있습니까?

아마도 4 개의 요소 배열로 모든 순열을 기록하고 전구가 꺼져 있는지 확인하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top