동전 변경 문제는 아주 잘 설명되어 있습니다. 교단의 동전의 무한한 공급을 감안할 때 x_1
까지 x_m
당신을 추가 조합의 수를 찾아야합니다 y
. 예를 들어, 주어진 x = {1,2,3}
것과 y = 4
우리는 네 가지 조합이 있습니다 :
{1,1,1,1}
{1,1,2}
{1,3}
{2,2}
소개
코인 변경 문제에는 몇 가지 변형이 있습니다. 이 변형에는 두 가지 추가 제한 사항이 있습니다.
- 모든 명칭은 한 번 이상 사용해야합니다.
- 정확히 고정 된 수의 동전을 사용해야합니다.
예를 들어, 주어진 x = {1,2,3}
, y = 36
그리고 n = 15
어디에 n
사용되어야 동전의 총 수는, 우리는 네 개의 조합을 얻을 :
{1,2,2,2,2,2,2,2,3,3,3,3,3,3,3}
(1 대, 7 대, 7 대){1,1,2,2,2,2,2,3,3,3,3,3,3,3,3}
(2 1, 5 2, 8 3){1,1,1,2,2,2,3,3,3,3,3,3,3,3,3}
(3, 3, 9, 3){1,1,1,1,2,3,3,3,3,3,3,3,3,3,3}
(4 1, 1 2, 10 3)
도전
문제는 enumerate
위에서 설명한대로 모든 조합을 열거하는 원하는 언어로 함수를 작성하는 것 입니다.
- 교파 목록. 예를 들어
{1,5,10,25}
. 목록이나 배열을 사용할 수 있습니다. y
모든 조합의 합계를 나타내는 음이 아닌 정수 입니다.n
총 코인 수를 나타내는 음이 아닌 정수 입니다.
논증의 순서는 중요하지 않습니다. 포인트 프리 기능이 허용됩니다.
enumerate
함수 의 출력은 조합 목록이어야합니다. 각 조합은 고유해야 n
하며을 더한 정수 목록이어야합니다 y
. 모든 교파는 각 조합에서 적어도 한 번 나타나야하며 조합이 누락되어서는 안됩니다. 정수와 조합의 순서는 중요하지 않습니다. 출력에 목록 또는 배열을 사용할 수 있습니다.
다음과 같은 경우를 명심하십시오.
- 두 경우
y
와는n
제로이며, 교단의 목록이 비어 후 출력 한 조합의 목록입니다 빈 조합 (예{{}}
). - 그렇지 않으면,
y
0n
이 0이거나 교단 목록이 비어 있으면 출력은 0 조합 목록입니다 (예 :){}
. - 더 일반적으로,
y
교파의 합보다 작거나 교파n
의 수보다 작 으면 출력은 0 조합 목록입니다.
스코어링은 전체 프로그램의 크기 (바이트)를 기반으로합니다. 여기에는 enumerate
함수, 도우미 함수, import 문 등이 포함됩니다. 테스트 사례는 포함되지 않습니다.
y
교단의 합보다 작 으면 재귀 솔루션의 어느 시점에서 교단 목록이 비어있는 기본 사례에 도달합니다. 따라서 답은 {}
(즉 해결책을 찾을 수 없음)입니다. 경우 n
적은 교단의 수보다 당신은 결국 어디에 기본 케이스에 도달 할 수 있습니다 n = 0
만 y != 0
. 따라서 대답은 다시 될 것 {}
입니다.