2012-01-14 3 views
2

숙제가 있고 이런 종류의 문제에 대한 코드를 어떻게 시작해야할지 모르겠습니다.C++ 용 배열에 가능한 모든 합계를 나열하는 방법?

하자가

[A] [B] [C] [D] [E]를 (예를 들어 우리가 5 개 원소가)

I 원하는 n 개의 요소로 구성하여 I는 정수 배열을 말한다 모든 조합의 합계 (ABCDE, ABCD, ABCE, ACDE, BCDE, ABC, ABD, ABE, ACE, ADE, BDE, CDE, AB, AC 등)의 합계를 인쇄하려는 가능성의 모든 합계를 나열하십시오. A, B, C, D 및 E)

또 다른 예는 배열의 4 개 요소입니다 ([A] [B] [C] [ D])

(ABCD, ABC, ABD, ACD, BCD, AB, AC, AD, BC, BD, CD, A, B, C 및 D)의 모든 합계를 나열하고 싶습니다.

여러분 모두 내 질문을 이해하기를 바랍니다. 도움이 필요하고 어떻게해야할지 모르겠다. "

"ABCDE "의 모든 조합의 집합"A "를 포함 (및 시작) 이들의 조합으로 구성되어 및 포함되지 않은 것들 :

+3

5 요소의 경우 얼마나 많은 조합이 있습니까? 4 요소의 경우 얼마나 많은 조합이 있습니까? 그 숫자는 친숙한가요? –

+0

가능한 [주어진 배열의 가능한 모든 하위 집합을 찾는 방법?] (http://stackoverflow.com/questions/679203/how-to-find-all-possible-subsets-of-a-given-array) –

+2

1, 2, 3 등의 요소 조합을 별도의 사례로 생각하십시오. 한 요소의 모든 조합을 인쇄하는 코드를 작성하십시오 (쉽습니다). 그런 다음 두 요소의 조합에 대한 코드를 작성해보십시오. 작동하지 않으면 시도한 것을 Google에 표시하십시오. – Jon

답변

2

음, 여기에 따라 간단한 규칙이다 에이". 두 경우 모두 "BCDE"의 모든 조합이 발생할 수 있습니다. 물론 "BCDE"의 조합도 같은 방식으로 처리 할 수 ​​있습니다.

0

"가능성의 합을 모두 나열하십시오"라는 말을 할 때 개의 조합을 실제로 알고 싶다는 뜻인가요?

그렇다면 한 번에 K 개씩 찍은 N 개 항목의 조합을 검색하십시오. 이 문제를 다루는 바로이 사이트에 페이지가 있습니다. 그런 다음 (5) + (4) + (3) + (2) + (1)의 조합 수를 합계하여 "합계의 가능성"을 얻으십시오.

또는 값의 배열이 있고 문자의 다른 조합으로 표현 된 다른 합계를 그대로 출력하고 싶다는 것을 의미합니까? 이 경우 실제로 모든 조합을 열거하고 합계를 계산해야합니다.

{1, 2, 3, 4, 5}의 배열이 주어지면이를 "A", "B", "C", "D", "E"로 인코딩 할 수 있습니다. 튜플로서는 것이다 :

  • ABCDE = 1 + 2 + 3 + 4 + 5
  • ABE = 1 + 2 + 5
  • BCE = 2 + 3 + 5

등 인코딩 된 열거 형을 사용하여 합계의 가수를 선택합니다. 중복을 허용할지 여부를 결정하면 (예 : 'ED'가 'ED'와 다른 경우) 결과에 매우 큰 영향을 미칩니다. 대부분의 경우 이것은 이 아니며이 원하는 것일 수 있습니다.

+0

헤드 라인을 제외하면, 수퍼 세트의 요소 수를 검색하는 것이 아니라 요소의 합계를 구하는 것이 매우 분명합니다. –

+0

당신은 누구든지, 수십 년에 걸쳐 ESL 인 많은 사람들과 일하면서 나는 결코 그 가정을하지 않을 것입니다. 그것은 정확히 내가 왜 구별을하고 둘 다 제공했는지입니다. 정화 단계를 왕복해야하는 번거 로움없이, 요구되는 정확도가 향상 될 수 있습니다. fwiw – kai26873

0

3 개의 요소가있는 경우 각 요소를 1에서 3 (또는 0에서 2)까지의 특정 위치에 배치하고 해당 요소가 특정 집합에 포함되는지 여부를 나타내는 부울 배열을 상상할 수 있습니다.이제,이 경우 2³ 인 솔루션의 수를 계산하고, (b, c) 예를 011에서, 세트에 이진 표현에서의 매핑을 수행하는 함수를 생성하는 경우

ABC remark 
--- --------------------- 
000 no element in the set 
001 one element, C 
010 one element, b 
100 ... 
011 two elements, b and c 
... 
111 all elements contained 

, 당신은 쉽게 루프를 프로그램 할 수 있습니다. 루프는 0에서 최대 1까지 반복하고 매핑 함수에 의해 생성 된 모든 세트를 반환합니다.