2017-10-26 1 views
1

Mark Overmars가 Game Maker 8.0을 사용하고 GML과 동일한 기능을 알고있는 경우가 아니면 의사 코드 ()에 대한 도움을 요청합니다. 목록/배열을 생성하는 방법은입니다. 크기가 가변적 인 X 개의 정수 세트의 고유 한 조합. 1-5 또는 1-1000이 될 수 있습니다. 예를 들어정수의 고유 한 조합 생성

:

IntegerList {1,2,3,4}

1,2-

1,3-

1,4-

2 3

2,4

이 간단한 뒤에

3,4

는 난 그냥 캔트은 C++ 및 Java와 같은 언어에서 작업을 수행하는 방법에 대한 여러 소스를 확인 후 주위에 내 머리를 정리하는 것 수학 같은 느낌. 모두에게 감사드립니다. 질문에 많은 세부 사항이없는 것처럼

답변

1

, 나는 가정

  • 귀하의 입력은 자연수 n 및 결과 배열이 1에서 n 모든 자연수가 포함되어 있습니다.
  • 위의 조합에 의해 제공된 예상 출력은 대칭 관계와 유사합니다 (i). 이자형. 귀하의 경우 [1, 2][2, 1]과 동일하게 간주됩니다.
  • 조합 [x, x]은 제외됩니다.
  • 2 개 요소와의 조합 만 있습니다.
  • List<> 데이터 유형 또는 동적 배열이 없으므로 배열을 만들기 전에 배열 길이를 알아야합니다.
  • 따라서 결과의 요소 수는 (예 : 4!/(2! * (4 - 2)!) = 24/4 = 6)이며 계 수는 !입니다.

첫째, 배열 요소 색인을 사용하여 처음 n 개의 자연수로 배열을 초기화하는 것이 매우 쉽습니다. 그러나 인덱스는 배열 요소의 속성이기 때문에 처음에 인덱스를 초기화 할 필요가 없습니다.

어레이를 처리하는 2 개의 중첩 루프가 필요합니다. 바깥 쪽 루프 범위는 i에서 1 ~ n - 1이고, 내부 루프 범위는 j에서 2 ~ n입니다. 인덱스가 1 대신 0에서 시작하는 경우 루프 제한에 대해이 값을 고려해야합니다. 이제 대상 배열을 [i, j] 조합으로 채워야합니다. 대상 배열에서 올바른 인덱스를 찾으려면 세 번째 카운터 변수를 사용해야하며 첫 번째 인덱스로 초기화되고 내부 루프의 끝에서 증가됩니다.

저는 동의합니다. 수학은 그다지 어렵지 않습니다.이 설명이 해당 코드를 직접 개발하는 데 충분해야한다고 생각합니다.

+0

고마워요, 제가 머리를 감싸려고 노력한 부분입니다. 당신은 데이터 조건과 입력에 대한 가정이 정확하며, 시작하기에 간결하지 않은 것에 대해 사과드립니다. –

+0

도움이 되니 기쁩니다 :) –