나는 지정된 값을 얻기 위해 동전의 최소 개수를 계산하는이 함수를 작성해야합니다.동전은 반환 값으로 특정 동전의 유형으로 바뀝니다
매개 변수와 함수 값 (INT)와이 주화의 종류와 그 값을 예로서
(코인 변화 기본 버전로부터 약간 다름)에 대한 정보를 갖는 문자열을 가지고
coin(20, "a:9,b:2,c:1");
그래서이 값을 I '는'9의 값으로 호출 경화가이 경우 20 , 2 값의 값 1 코인 'C'코인 'B' 그래서 결국이 함수는 나에게 동전을 가져다주는 me'eab '을 반환 할 것입니다. 그리고 한 번에 최소 있는 동전 'B'는 여기에 몇 가지 othere 테스트 케이스입니다
assert(strcmp(coin(4, "a:5,b:2,c:1"),"bb")==0); assert(strcmp(coin(12,"a:3,b:2"),"aaaa")==0);
희망의 사람이 나를 도울 수있다. 같은 문제가있는 예제 (http://code.geeksforgeeks.org/jeuR48)를 이미 보았습니다.하지만 동전의 유형을 관리 할 수있는 방법이 없습니다.
는 "동전의 종류를 관리". 동전 목록을 구문 분석하여 배열이나 목록에 넣어야합니다. 목록에서','의 수를 읽고 num_commas + 1로 배열을 할당 한 다음 목록을 파싱 할 수 있습니다 (이 경우 여러 함수가 있습니다, 예를 들어'strtok'). – Nidhoegger
C에서 문자열을 반환하는 경우 일반적으로 일부 문자열이 첨부됩니다. ㅎ. 다시 말해 반환 된 문자열에 대한 메모리 관리에 대해 생각해야합니다. – unwind
또한이 프로그램에 대한 "최소 접근법"으로 작동하지 않는 테스트 사례를 추가합니다 (위에서 아래로 및 빼기). 이 사례를 시도해보십시오 :'coin (12, "a : 10, b : 8, c : 4, d : 1"). 이것은 최소한의 접근 ('add')으로 3 동전을 줄 것이고, 정답은 2 개의 coinds ('bc')입니다. – Nidhoegger