주어진 숫자에서 모든 조합 얻기

dave88

배열에 저장된 모든 가능한 숫자 조합을 얻고 싶습니다.

예를 들면 :

{1,2,3,4} 반환의 첫 번째 배열 사용

1,2,3,4
1,3,4,2
1,4,2,3
2,3,4,1
2,4,1,3 etc

어떻게 할 수 있습니까?

명확히하기 위해-{1,2,3,4}의 숫자 배열을 취하고, 숫자 시퀀스를 재정렬하고, 새 배열을 반환하고 (목록에 추가) 가능한 모든 조합을 찾을 때까지 반복합니다.

감사

tom.dietrich

여기에 당신이 원하는 것을 정확히 포함 하는 대답 이 있습니다. 다른 답변을 읽으면 더 빨리 작동하는 몇 가지 다른 접근 방식이 있지만 사용하기가 조금 더 복잡합니다.

이것은 내 자신이 아닌 관련 코드입니다.

public static IEnumerable<IEnumerable<T>> QuickPerm<T>(this IEnumerable<T> set)
{
    int N = set.Count();
    int[] a = new int[N];
    int[] p = new int[N];

    var yieldRet = new T[N];

    List<T> list = new List<T>(set);

    int i, j, tmp; // Upper Index i; Lower Index j

    for (i = 0; i < N; i++)
    {
        // initialize arrays; a[N] can be any type
        a[i] = i + 1; // a[i] value is not revealed and can be arbitrary
        p[i] = 0; // p[i] == i controls iteration and index boundaries for i
    }
    yield return list;
    //display(a, 0, 0);   // remove comment to display array a[]
    i = 1; // setup first swap points to be 1 and 0 respectively (i & j)
    while (i < N)
    {
        if (p[i] < i)
        {
            j = i%2*p[i]; // IF i is odd then j = p[i] otherwise j = 0
            tmp = a[j]; // swap(a[j], a[i])
            a[j] = a[i];
            a[i] = tmp;

            //MAIN!

            for (int x = 0; x < N; x++)
            {
                yieldRet[x] = list[a[x]-1];
            }
            yield return yieldRet;
            //display(a, j, i); // remove comment to display target array a[]

            // MAIN!

            p[i]++; // increase index "weight" for i by one
            i = 1; // reset index i to 1 (assumed)
        }
        else
        {
            // otherwise p[i] == i
            p[i] = 0; // reset p[i] to zero
            i++; // set new index value for i (increase by one)
        } // if (p[i] < i)
    } // while(i < N)
}

이 확장 방법을 사용 array.QuickParm.Select(innerEnum => innerEnum.ToArray()).ToArray()하면 배열의 배열로 결과를 얻을 수 있습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

주어진 숫자에서 모든 숫자의 곱 찾기

분류에서Dev

주어진 숫자에 대해 두 숫자의 가능한 모든 조합 / 분할 찾기

분류에서Dev

주어진 합계에 도달하기 위해 주어진 숫자의 가능한 모든 조합을 가져옵니다.

분류에서Dev

Java에서 주어진 배열의 가능한 모든 조합 찾기

분류에서Dev

파이썬, 주어진 모스 부호에서 가능한 모든 문자 조합 찾기

분류에서Dev

Javascript는 주어진 크기에 완벽하게 맞는 주어진 세그먼트의 모든 조합을 얻습니다.

분류에서Dev

JS에서 주어진 패턴과 일치하는 가능한 모든 문자열 조합 찾기

분류에서Dev

주어진 과정에 대한 모든 전제 조건 찾기

분류에서Dev

LMC에서 주어진 숫자의 모든 자릿수를 인쇄합니다.

분류에서Dev

주어진 숫자 세트에서 가능한 모든 표현식 풀기

분류에서Dev

unorder_set에서 주어진 크기 k의 모든 부분 집합을 얻습니까?

분류에서Dev

unorder_set에서 주어진 크기 k의 모든 부분 집합을 얻습니까?

분류에서Dev

주어진 뒤집기 횟수에서 특정 수의 앞면과 뒷면의 모든 조합 찾기

분류에서Dev

주어진 점수 목록에 대한 모든 점수 조합

분류에서Dev

주어진 숫자와 같거나 초과하는 모든 조합

분류에서Dev

JavaScript에서 주어진 대체물과 문자열의 모든 조합을 어떻게 얻을 수 있습니까?

분류에서Dev

정렬되지 않은 숫자 배열에서 주어진 합계를 가진 모든 쌍을 찾습니다.

분류에서Dev

주어진 목록의 주어진 범위에있는 모든 숫자를 더합니다.

분류에서Dev

주어진 조건을 가진 모든 중복 행 찾기

분류에서Dev

주어진 모든 배열 크기에 대해 배열에 숫자 추가-Java

분류에서Dev

조합으로 숫자에서 단어 얻기

분류에서Dev

주어진 한도 내에서 최대 합계를 얻기 위해 숫자 목록을 결합합니다.

분류에서Dev

파이썬에서 주어진 문자 목록에서 모든 문자열 조합 생성

분류에서Dev

mysql 테이블의 단일 열에서 주어진 합계와 동일한 숫자 조합 찾기

분류에서Dev

주어진 숫자의 합계 찾기

분류에서Dev

모든 조합 얻기

분류에서Dev

모든 조합 얻기

분류에서Dev

주어진 문자열과 주어진 사전에 모두있는 모든 단어 목록 만들기

분류에서Dev

주어진 동전에서 가능한 모든 합계

Related 관련 기사

  1. 1

    주어진 숫자에서 모든 숫자의 곱 찾기

  2. 2

    주어진 숫자에 대해 두 숫자의 가능한 모든 조합 / 분할 찾기

  3. 3

    주어진 합계에 도달하기 위해 주어진 숫자의 가능한 모든 조합을 가져옵니다.

  4. 4

    Java에서 주어진 배열의 가능한 모든 조합 찾기

  5. 5

    파이썬, 주어진 모스 부호에서 가능한 모든 문자 조합 찾기

  6. 6

    Javascript는 주어진 크기에 완벽하게 맞는 주어진 세그먼트의 모든 조합을 얻습니다.

  7. 7

    JS에서 주어진 패턴과 일치하는 가능한 모든 문자열 조합 찾기

  8. 8

    주어진 과정에 대한 모든 전제 조건 찾기

  9. 9

    LMC에서 주어진 숫자의 모든 자릿수를 인쇄합니다.

  10. 10

    주어진 숫자 세트에서 가능한 모든 표현식 풀기

  11. 11

    unorder_set에서 주어진 크기 k의 모든 부분 집합을 얻습니까?

  12. 12

    unorder_set에서 주어진 크기 k의 모든 부분 집합을 얻습니까?

  13. 13

    주어진 뒤집기 횟수에서 특정 수의 앞면과 뒷면의 모든 조합 찾기

  14. 14

    주어진 점수 목록에 대한 모든 점수 조합

  15. 15

    주어진 숫자와 같거나 초과하는 모든 조합

  16. 16

    JavaScript에서 주어진 대체물과 문자열의 모든 조합을 어떻게 얻을 수 있습니까?

  17. 17

    정렬되지 않은 숫자 배열에서 주어진 합계를 가진 모든 쌍을 찾습니다.

  18. 18

    주어진 목록의 주어진 범위에있는 모든 숫자를 더합니다.

  19. 19

    주어진 조건을 가진 모든 중복 행 찾기

  20. 20

    주어진 모든 배열 크기에 대해 배열에 숫자 추가-Java

  21. 21

    조합으로 숫자에서 단어 얻기

  22. 22

    주어진 한도 내에서 최대 합계를 얻기 위해 숫자 목록을 결합합니다.

  23. 23

    파이썬에서 주어진 문자 목록에서 모든 문자열 조합 생성

  24. 24

    mysql 테이블의 단일 열에서 주어진 합계와 동일한 숫자 조합 찾기

  25. 25

    주어진 숫자의 합계 찾기

  26. 26

    모든 조합 얻기

  27. 27

    모든 조합 얻기

  28. 28

    주어진 문자열과 주어진 사전에 모두있는 모든 단어 목록 만들기

  29. 29

    주어진 동전에서 가능한 모든 합계

뜨겁다태그

보관