문제
아래와 같은 배열이 있습니다
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 개의 요소 배열로 모든 순열을 기록하고 전구가 꺼져 있는지 확인하십시오.