그래서 저는 여가 시간에 문제를 해결하기 위해 노력하고 있습니다. 여기 내가있는 곳이야. 나는 숫자 40을 가지고있다. 그것은 선수들을 나타낸다. 저는 다른 숫자 39, 38, ... 10을 받았습니다. 이것은 처음 30 명의 선수 (1-30)의 점수를 나타냅니다. 나머지 선수 (31-40)는 알 수없는 점수를 가지고 있습니다. 내가 뭘하고 싶은지는 점수의 조합이 주어진 데이터와 얼마나 일치 하는지를 찾는 것입니다.데이터와 일치하는 점수의 가능한 모든 조합을 찾으십시오.
간단한 예를 들어 : 3 명이 있다면. 점수의 가능한 조합 수는 3 (0,2; 2,0; 1,1)이며, 여기서 (a, b)는 플레이어 1과 플레이어 2의 승 수를 나타냅니다. 로 나타났다. 어떤 사람도 3 승을 할 수 없으므로 (3,0)의 조합은 작동하지 않습니다. 우리가 총 3 번의 승리가 필요하기 때문에 (0,0)도 작동하지 않을 것입니다 (그리고 0,0으로 얻지 못할 것입니다).
가능한 총 게임 수를 찾았습니다. 총 게임 수입니다. 즉 총 승리 수입니다. (넥타이가 없습니다.) 마지막으로, 플레이어 당 최대 승리 변수가 있습니다 (총 플레이어 수보다 1이 작습니다. 플레이어는 그 이상을 가질 수 없습니다.)
N 개의 승리를 각 플레이어에게 퍼뜨린 다음 조건에 맞지 않는 조합을 빼서 고유 조합 수를 계산합니다. 예를 들어, 각 사람에게 4 번을 넘지 않고 5 명에게 10 번의 승리를주는 여러 가지 방법을 알아 내려면 다음을 사용하십시오. C (14,4) -C (5,1) * C (9,4) + C (5,2) * C (4,4) = 381. C (14,4)는 공식 C (n + k-1, k-1) (google 막대 및 스트립)에서 유래합니다. 다음은 5 (허용되지 않음)를 가진 것들을 집어 내고, 우리가 두 번 빼낸 것들을 더합니다.
그래, 더 쉬운 방법이있을거야. 마지막으로, 숫자가 너무 커서 컴퓨터가 적절하게 처리 할 수 있는지 확신 할 수 없습니다. 우리는 C (780, 39)에 대해 이야기하고 있는데, 이는 1.15495183 × 10^66입니다. 그럼에도 불구하고, 이것을하는 더 좋은 방법이 있어야합니다.
요약하면 40 명입니다. 처음 30 명의 사람들의 점수는 10 - 39입니다. 마지막 10 명의 사람들은 점수가 알려져 있지 않습니다. 기준을 충족시키는 점수를 몇 개나 생성 할 수 있습니까? 모든 점수가 가능한 총 승리에 합산되며 각 플레이어는 39 점을 더 얻지 않습니다.
생각하십니까?
좀 더 구체적으로 작성하십시오. 10에서 40까지의 숫자가 실제 점수를 나타 냅니까? "주어진 데이터와 얼마나 많은 순열이 일치 하는가"는 의미는 무엇입니까? 또한, 승리와 손실은 어떻게 관련되어 있습니까? 작동하지 않는 순열의 예를 들려 주시겠습니까? 컴퓨터는 놀라 울 정도로 많은 수를 처리 할 수 있습니다. 잠재적 인 데이터 유형 범위 (long, double 등)를보십시오. 간단한 순열을 계산하려면 factorials를 사용하십시오. http://www.mathsisfun.com/combinatorics/combinations-permutations.html – collinjsimpson