나는 정수 n을 m (음수가 아닌) 정수의 합으로 표현하는 모든 방법을 찾는 알고리즘을 찾고있다. 저는 특히 m = 6과 n⩽20에 관심이 있습니다. 가능한 모든 것을 찾을 수있는 가장 빠른 방법은 무엇입니까? (컴퓨터가 아니라 손으로). 가능한 경우, 관련이없는 순서 (즉, [1, 2, 0, 0, 0, 0] 및 [2, 1, 0, 0, 0, 0)만으로 6 개의 정수 조합을보고 싶습니다. ]은 1 조합으로 계산됩니다).정수 n을 m 개의 정수의 합계 (순서없이)로 얻는 모든 방법을 찾는 방법은 무엇입니까?
가장 간단한 방법은 6 이하의 정수를 20보다 작거나 같은 모든 순열을 시도하고 20까지 합계 한 값을 우리 결과에 더하는 것입니다. (우리가 순서를보고 싶지 않으면 두 배를 제거합니다). 이것은 20^6 가능성이 확인하는 데 꽤 오랜 시간이 걸리기 때문에 시간이 많이 걸릴 것 같습니다.
이 문제를 해결하는보다 효율적인 방법은 무엇입니까?
힌트 : 방지 반복은 쉽게 정렬 된 순서로 생성하는 경우 수행 할 수 있습니다. 채울 m 개의 숫자가 n까지 합쳐져서 숫자가 증가하는 순서로 정렬되어 있다면, 첫 번째 숫자의 가능성은 무엇입니까? –