2011-03-14 6 views
0

이 코드를 두 번 확인하고 싶습니다. 주로 실수에 대한 모뮬 러스 연산자와 관련하여 오류가 없습니다.코인 변경 알고리즘

질문 :

문제점 : ACL 알고리즘을 기록하도록, 항목의 선정 주어진 (이하 또는 1 달러와 동일), 50 퍼센트, 20 퍼센트, 10 퍼센트, (5)의 수를 제공 구매자가 1 달러를 넘겨 주면 받게 될 동전은 1 센트와 1 센트 동전입니다. 변경시 동전 수를 최소화해야합니다.

내 솔루션입니다 : 변경 후 3 센트까지, 93 센트, 이것은 43 센트로 변경됩니다 경우 내가 대해 확실 해요

Algorithm coin_change 
{ 
    int cost, change, fifty, twenty, ten, five, one; 
    read(cost); 
    change = 100 - cost; 

    fifty = change/50; 
    change = change % 50; 

    twenty = change/20; 
    change = change % 20; 

    ten = change/10; 
    change = change % 10; 

    five = change/5; 
    change = change % 5; 

    one = change; 

    print(fifty, twenty, ten, five, one); 
} 

중요한 것은, 예를 들면이다. 이제 질문은 "change = change % 10"이 변경되면 3 센트가 반환됩니다. 그 말이 합리적 이었으면 좋겠다.

미리 감사드립니다.

+0

@Bill, 여기에 동의 하리라 확신하지만, 내가 할 수있는 모든 것이 왜 :-)인지 설명하는 두려운 블루 다이아몬드가 있습니다. 코드는 유사하지만이 질문은 구체적으로 a에서 모듈로의 효과에 관한 것입니다. (원래의 질문에는 모듈성을 사용하지 않는 순진한'while' 해답이있었습니다). – paxdiablo

+0

@ paxdiablo : 충분합니다. 나는 그의 해결책이 원래의 질문에 대한 답에서 오지 않았 음을 알았다. 그래서 다르다. –

답변

2

3 모듈 (10)이 정의에 의해, 당신에게 세를 줄 것이다 처음 인 경우 3을 반환합니다. 주어진 숫자로 나눌 때 남은 나머지입니다.

3을 10으로 나눌 때 나머지가 3 인 경우 0이됩니다. 따라서 알고리즘은 그 의미에서 정확합니다.

일반적으로 컴퓨터 언어에서 모듈로 걱정해야 할 것은 음수를 처리하는 것입니다. 일부 언어는 다르게 동작합니다.

하지만 음수를 사용하는 것은 아니므로 신경 쓰지 마세요.

1

예.

change = change % 10 

이 여전히 관계없이 변화가 43 또는 3