두 개의 연결 목록을 무작위로 병합

Cohenadair

운없이 여러 가지 다른 솔루션을 찾고 시도했다고 말하면서 시작하겠습니다. 나는 이것에 대해 너무 오랫동안 일해 왔기 때문에 어떤 도움이라도 대단히 감사하겠습니다.

할당은 카드 한 벌을 나타내는 연결 목록을 섞는 것입니다. 모든 메서드 선언을 받았으며 재귀 만 사용할 수 있다고 들었습니다. 나는 운없이 생각할 수있는 모든 가능한 방법으로 이것에 대해 갔다.

기본적으로 우리가 사용하는 전략은 연결된 목록을 2로 분할하고 두 목록을 섞은 다음 (재귀 적으로 shuffle 메서드를 호출하여) 섞은 목록을 다시 병합하는 것입니다.

알아야 할 몇 가지 사항 :

  • LLN = 링크 된 목록 노드
  • len = "this"목록의 길이
  • b = "this"를 병합 할 목록
  • blen = "b"목록의 길이

이 코드는 빈 목록을 반환하고 이유를 알 수 없습니다 (분명히). LLN-> shuffle ()은 셔플 된 목록의 헤드를 반환해야합니다. 지금은 빈 목록을 반환하고 있습니다.

LLN * LLN::merge(int len, LLN *b, int blen) {
    //cout << "len: " << len << ", blen: " << blen << endl;

    if (len == 0) return b;
    if (blen == 0) return this;

    int r = rand() % (len + blen) + 1; // between 1 and (len + blen)

    if (r <= len) {
        if (next)
            next = next->merge(len - 1, b, blen);
        else
            next = b;

        return this;
    } else {
        if (b->getnext())
            b->setnext(b->getnext()->merge(blen - 1, this, len));
        else
            b->setnext(this);

        return b;
    }
}

LLN *LLN::shuffle(int len) {
    if (len == 1)
        return this;

    LLN *tmp = split();

    int thisLength = (len + 1) / 2; // for an odd numbered length, "this" list is 1 node larger
    int tmpLength = len / 2;

    shuffle(thisLength);
    tmp = tmp->shuffle(tmpLength);

    return merge(thisLength, tmp, tmpLength);
}

이것이 메소드가 호출되는 방법입니다.

void LL::shuffle() {
    if (head != NULL)
        head = head->shuffle(size);
}

LL (Linked List) 개체는 표준 52 개 카드 (각 카드가 노드 임)로 초기화됩니다.

다른 것이 필요하면 알려주세요.

매우 감사합니다!

Cohenadair

교수님의 도움으로 문제를 파악할 수있었습니다. 내 오류는 내 split () 메서드의 기본 사례에있었습니다. 그 고정으로 모든 것이 잘 작동합니다. 나는 또한 Charlie의 제안을 적용했습니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

두 개의 연결 목록을 병합 할 때 오류 수신

분류에서Dev

두 개의 Erlang 목록 결합 / 병합

분류에서Dev

두 개의 정렬 된 연결 목록 병합

분류에서Dev

두 개의 정렬 된 단일 연결 목록 병합

분류에서Dev

두 개의 정렬 된 연결 목록 병합

분류에서Dev

두 개의 정렬 된 연결 목록 병합

분류에서Dev

두 개의 데이터 프레임을 무작위로 결합

분류에서Dev

목록의 엔티티에서 두 속성을 결합하고 Linq로 병합

분류에서Dev

Pandas는 두 개의 데이터 프레임을 우선 순위로 연결 / 병합합니다.

분류에서Dev

두 개의 목록을 하나의 사전으로 결합

분류에서Dev

자바 스크립트-두 개의 정렬 된 연결 목록 이해 병합

분류에서Dev

두 개의 정렬 된 단일 연결 목록 병합 [버그 됨]

분류에서Dev

두 개의 시계열 객체 (ts) 목록을 새 목록으로 병합

분류에서Dev

두 개의 select 문을 하나로 병합 / 결합

분류에서Dev

두 개의 사전 목록을 병합하고 결과적으로 키 업데이트

분류에서Dev

파이썬에서 두 개의 정렬 된 연결 목록을 병합하는 방법

분류에서Dev

두 개의 목록 항목을 하나의 항목으로 연결

분류에서Dev

유연한 병합-두 개의 열을 하나로

분류에서Dev

순서를 유지하는 두 목록의 무작위 병합

분류에서Dev

파이썬에서 두 개의 사전을 값으로 목록과 병합

분류에서Dev

두 개의 DataFrame을 청크로 병합

분류에서Dev

두 개의 사전을 키로 병합

분류에서Dev

조건부로 개체 내에서 두 목록을 병합

분류에서Dev

두 개의 목록을 반복하고 항목을 결합

분류에서Dev

Dart는 대체 방식으로 두 개의 목록을 결합합니다.

분류에서Dev

연결된 두 개의 화면 세션을 병합 할 수 있습니까?

분류에서Dev

C #에서 두 개의 StringCollection을 하나로 결합 / 병합하는 방법

분류에서Dev

파이썬의 두 목록을 하나로 병합

분류에서Dev

두 개의 결과 행을 병합하는 MYSQL-(패배 및 승리 팀)을 하나의 열로 병합

Related 관련 기사

  1. 1

    두 개의 연결 목록을 병합 할 때 오류 수신

  2. 2

    두 개의 Erlang 목록 결합 / 병합

  3. 3

    두 개의 정렬 된 연결 목록 병합

  4. 4

    두 개의 정렬 된 단일 연결 목록 병합

  5. 5

    두 개의 정렬 된 연결 목록 병합

  6. 6

    두 개의 정렬 된 연결 목록 병합

  7. 7

    두 개의 데이터 프레임을 무작위로 결합

  8. 8

    목록의 엔티티에서 두 속성을 결합하고 Linq로 병합

  9. 9

    Pandas는 두 개의 데이터 프레임을 우선 순위로 연결 / 병합합니다.

  10. 10

    두 개의 목록을 하나의 사전으로 결합

  11. 11

    자바 스크립트-두 개의 정렬 된 연결 목록 이해 병합

  12. 12

    두 개의 정렬 된 단일 연결 목록 병합 [버그 됨]

  13. 13

    두 개의 시계열 객체 (ts) 목록을 새 목록으로 병합

  14. 14

    두 개의 select 문을 하나로 병합 / 결합

  15. 15

    두 개의 사전 목록을 병합하고 결과적으로 키 업데이트

  16. 16

    파이썬에서 두 개의 정렬 된 연결 목록을 병합하는 방법

  17. 17

    두 개의 목록 항목을 하나의 항목으로 연결

  18. 18

    유연한 병합-두 개의 열을 하나로

  19. 19

    순서를 유지하는 두 목록의 무작위 병합

  20. 20

    파이썬에서 두 개의 사전을 값으로 목록과 병합

  21. 21

    두 개의 DataFrame을 청크로 병합

  22. 22

    두 개의 사전을 키로 병합

  23. 23

    조건부로 개체 내에서 두 목록을 병합

  24. 24

    두 개의 목록을 반복하고 항목을 결합

  25. 25

    Dart는 대체 방식으로 두 개의 목록을 결합합니다.

  26. 26

    연결된 두 개의 화면 세션을 병합 할 수 있습니까?

  27. 27

    C #에서 두 개의 StringCollection을 하나로 결합 / 병합하는 방법

  28. 28

    파이썬의 두 목록을 하나로 병합

  29. 29

    두 개의 결과 행을 병합하는 MYSQL-(패배 및 승리 팀)을 하나의 열로 병합

뜨겁다태그

보관