[음악 연주] ZAMYLA CHAN : 지금의이 욕심 해결하자. 당신은 점원이고, 당신 말 고객을 줄 필요가 변화의 일정 금액. 글쎄, 당신은 욕심 출납원 인 경우에, 당신은 모든을 유지하려는 것 자신에게 동전. 그래서 당신은 고객에게 자신의 변화를 줄 것 가능한 한 적은 수의 동전을 사용. 이 P-세트에 대한 귀하의 작업을 구현하는 것입니다 욕심, 프로그램이 최소 수 산출한다 하나를 만들기 위해 사용되는 동전의 변화의 양이 없습니다. 프로그래밍에 다이빙하기 전에 개념과 욕심에 대한 C 구문, 욕심을 통해하자 첫 번째 이야기 프로그램 및 표시되면 우리 알고리즘을 식별 할 수 있습니다. 기억하는 알고리즘 다만 세트입니다 문제를 해결하기위한 지침을 제공합니다. 욕심에 대한 알고리즘은 될 것 논리적 규칙과 단계로 설정하는 것이 우리는 볼 수 있습니다. 그리고 그들은 항상 최소를 얻을 것입니다 필요한 동전의 수입니다. 당신이 필요할 것 우선 알고는 얼마나 많은 변화에게 있습니다 고객에게 빚지고있다. 이 예를 들어,이 $ 0.32를 가정 해 봅시다. $ 0.32를 다시 얻을 수있는 방법은 여러 가지가 있습니다. 당신은 예를 들어, 사용할 수 있습니다, 32 페니. 또는 당신은 약간의 탐욕에 있었다 경우 당신의 동전을 선택하면 사용할 수 있습니다 제공하여 다섯 동전 대신 32 고객은 세 센트 - 각 0.10 달러 - 두 개의 동전 - $ 0.01 각. 그러나 우리는 다섯 동전보다 더 할 수 있습니까? 우리는 심지어 탐욕 될 수 있을까? 아마도. 이제 산책을 계속하자 욕심 프로그램 및 참조하십시오. 최종 목표는 거의 동전을 사용하는 경우 가능한 한, 그것은 대부분의 것 가장 큰를 사용하는 것이 현명 가능한 동전. 당신은 오히려 사분 줄 것 백업 - $ 0.25를 각각 - 다섯 센트 이상 - $ 0.05 각. 그래서 아마도 우리의 통치 규칙 욕심은 항상 사용할 수있는 가능한 최대의 동전. 분기 중, 10 센트,​​ 센트, 와 동전, 우리의 큰 동전은 분기입니다. 그래서 우리는 먼저 사용하려고합니다. 우리의 $ 0.32에 백업합니다. 우리가 제공하는 분기를 사용할 수 고객 $ 0.32? 예. 즉, 왼쪽으로 $ 0.07에 우리를 떠날 것이다. 우리는 또 다른 분기를 사용할 수 있습니까? 아니, 25 때문에 일곱보다 크다. 우리는 고객에게 제공하지 않으 우리가 그들을 빚보다 더. 괜찮아요. 우리는 우리의 숙소를 소진 한 지금, 의 다음 최대로 이동하자 동전, 센트. 우리에게주고 한푼도 사용할 수 고객들은 $ 0.07 다시? 아니, 10 년 이후 일곱보다 크다. 그럼 다음으로 가장 큰 동전 접근 우리에게 니켈입니다. 우리는 니켈을 사용할 수 있습니까? 예. 그리고 우리는 남은 $ 0.02이있을 것이다. 우리는 $ 0.02를 반환하는 니켈을 사용할 수 없습니다. 그래서 우리는 마지막 동전에서 이동 우리의 처분 - 페니. 그리고 두 개의 동전을 사용한 후, 우리는 것 것을 의미 제로 센트, 왼쪽 우리는 성공적으로 다시 지불했습니다 자신의 변화가 빚 사용자 네 개의 동전을 사용하여 - 사분의 하나 니켈, 두 개의 동전. 당신은 확인하기 위해 직원 솔루션을 실행할 수있는 경우에 우리의 통치 규칙과 프로세스를 준 우리 정답. 대부분의 문제 세트의 경우, 당신은 할 수 있습니다 방법을 확인하기 위해 직원 솔루션을 실행하는 자신의 프로그램이 작동합니다. 그리고 구체적인 지침은 것 문제의 수는 사양을 설정합니다. 우리는 직원의 솔루션을 실행되면, 많은 변화가 빚진 방법은 우리를 묻는 메시지 그것은을 요구주의 달러 금액. 우리는 입력 $ 0.32, 0.32. 그것은 네 개의 동전이 빚 우리에게 알려줍니다, 우리의 대답과 일치. 환상적인. 그래서 지금의보고 시작하자 구현에 욕심 알고리즘. 우리는 몇 가지를 알고있다. 우리는 신속한해야 하나, 변화의 양에 대한 사용자. 우리가 수행 할 것이라는 점을 두 가지, 우리의 항상 사용하는 규칙을 지배하는 가능한 최대의 동전. 그리고 셋째, 우리는 추적 할 필요가 있음 얼마나 많은 동전 우리가 사용하고 있습니다. 마지막으로, 우리는 인쇄 할 필요가 있기 때문에 우리 코인의 수. 첫째, 사용자에게 메시지를 변화의 한 금액을 초과 할 수 없습니다. 사용자 입력을 처리 할 때마다 확인 당신의 모든 생각해야 전용 입력의 요구, 및 그에 맞는 입력을 허용 요구 사항. 이 경우, 우리는 취급 할 달러의 금전적 가치. GetFloat 및 getInt와 기능 보장 숫자 입력이된다. 그러나 사용자가 입력 할 수 있습니다 음의 수치. 이렇게 비 음성을 사용하는 기억 모든 부정을 포함 입력, 숫자와 영. 이 경우, 입력 부동해야한다. 즉, 십진수. 문제 세트 사양이 필요하기 때문에 당신은 달러에 입력을 요구합니다. 그러나 C에서 부동 소수점 값은 할 수 없습니다 정확하게 표현 될 수있다. 유한 수 있기 때문에 비트의 어느와 무한 값을 나타냅니다. 숫자 0.1를보십시오. 나는 0.1을 작성하는 당신을 물어면 백 소수점에 손, 당신은 다음에 1을 작성합니다 99 개의 0. 우리가 기대하는 우리의 컴퓨터 것 정확히 똑같은 일을 인쇄 우리는 그것을 요​​구한다면. 그럼 그것이 무엇을 보자. 나는쪽으로 인쇄 값을 검토합니다 이 말은 통해 도보. 지금은 F의 %는 것을 여기서 볼 부동 소수점에 대한 자리 표시 자. 그러나 우리는 우리가 원하는 것을 사전에 지정 100 소수 표시하고 새로운 멋진 서식을위한 라인. 문자열 후, 우리는 같은 0.1을 선택 우리가 인쇄 할 것을 떠. 그 결과, 하나 뒤에 일부 0으로, 그러나 숫자의 전체 무리. 확실히로 예상되지 않음. 부동 소수점 부정확 소개 할 수 있습니다 에 오류를 반올림하여 계산 당신이 것 확실히 방지 할. 당신은 당신이 더 많은 예제를보고 싶다면 에서 imprecision.ce을 다운로드 할 수 있습니다 간단한이다, 코드를 살펴 떠 요청하고 그것을 인쇄 프로그램 다시 백 소수점 자리에. 물론, 당신이 표시하려는 경우 더 많거나 적은 소수점 당신은 자신을 변경할 수 있습니다. 앞으로 살펴 보 겠지만, 생각의 차이 당신이 얻을 때 둘 사이에, 작은 수레를 곱한 추가로, 그 불일치는 결국 추가 할 수 있습니다. 욕심을 백업합니다. 우리는 반올림 오류를 방지 할 수 있습니다 정수 처리에 의해. 우리는 유효 입력을받을 그래서 후에 사용자,의이 변환하자 센트 달러 가치. 정신적으로, 우리는 곱하여이 작업을 수행 에 100 달러 값입니다. 그러나, 기억, 부동 소수점의 부정확, 우리가 만들고 싶어 우리가 올바른 값을 사용하고 있는지 확인하십시오. (100)에 의해 곱하면 기본적으로 이동합니다 소수점 이하 두 자리에 오른쪽 잘라낸 또는 절단 그 후 아무것도. 당신은 좀 더 주변을 재생하는 경우 예를 들면, 당신은 볼 수 있습니다 당신은하지 않습니다 당신이 경우 항상 올바른 번호를 가지고있어 절단이 방법을 사용합니다. 예를 들어, 12.59은 100에 인쇄 당신에게 제공 소수점, 12.5899, 등등. 당신이 잘릴 경우, 12.58를 얻을 것 하지 당신이 필요로 같은 12.59. 대신, 반올림하는 것이 가장 좋습니다 숫자 첫 번째. 다행히, C는 함께 제공 라운드 호출되는 함수. 그것은 수학 라이브러리에 있습니다. 당신은 라운드를 사용하는 방법을 알고 싶다면, 당신은 수동 또는을 가져올 수 그 기능에 대한 매뉴얼 페이지를 참조하십시오. 당신이 입력하는 사람, 짧게하여이 작업을 수행 할 설명서, 다음 기능 당신 조회하도록합니다. 그래서 터미널에 사람이 라운드를 입력 명령 줄은 사용 설명서를 가져올 것이다. 그것은 해독 조금 어려울 수도 있습니다, 결국 당신은거야 그것의 묘리를 터득하다. 매뉴얼 페이지는 어떤 기능을 보여 수행 한 다음 몇 가지 그것의 가능한 사용. 나는 탐험을 떠날거야 라운드에 대한 매뉴얼 페이지를 참조하십시오. 하지만 반올림하는 데 사용할 수 있다는 것을 알고 에서 변환하는 동안 값 센트 달러입니다. 라운드는 당신에게 번호를 다시 줄 것이다 데이터 형식 두 배의. 그리고 당신은 변환하거나 변환 할 수 있습니다 그 후 int로 그것. 좋아요. 지금까지 우리는 사용자에게 메시지가 표시했습니다 통화량 등에 대한 센트에 변환. 이제 우리는 알고리즘을 구현할 수 있습니다 즉, 항상 사용하는 가능한 가장 큰 동전. 다중이 있다는 것을 염두에 두십시오 욕심처럼 구현하는 방법 접근하는 여러 가지 방법이 있습니다 모든 컴퓨터 과학 문제. 가장 우아한 방법을 찾는, 그 재미있는 부분이다. 이러한 P-세트 전​​반에 걸쳐, 만약 프로그램 정확히 일치하지 않는 내 연습에 대한 설명, 괜찮습니다. 그러나 그냥 통과해야합니다 (50), 만족을 모두 체크 요구 사항 사양을 형성, 당신은 고려하는 것이 있는지 여부를 귀하의 접근 방식은 좋은 디자인을하고 있습니다. 즉, 얼마나 효율적? 예를 들어, 반복적 인 입력 않았다 대신 루프를 사용하여 코드 라인? 더 나은 디자인과 코드를 작성하는 것 당신이 진행으로 경험을 제공 과정을 통해. 이를 통해 산책, 내가 갈거야 에 이용 될 수있는 두 가지 방법 욕심 완료. 첫 번째 방법은 사용하는 방법입니다 루프와 빼기. 이전에, 우리는을 통해 이야기 할 때 욕심 과정, 우리는 지속적으로 우리는 내무반을 사용할 수 있는지 여부를 확인, 와 분기를 사용까지 나머지 값은 이하 $ 0.25이었다. 이것은 잘 변환 루프 구조있다. 우리는 여전히 사용할 수 있지만 분기, 하나를 사용합니다. 그 동안 루프는 오랫동안 실행해야 나머지 값보다 큰 경우로서 또는 분기의 퍼센트 값과 동일. 그것은 당신이 또한 원하는거야 것을 의미합니다 나머지 현금을 추적 값, 그리고 모든 업데이트 당신이 동전을 사용하는 시간. 또한, 마지막에 그 기억하여 출력은 사용 된 동전의 수이다. 그래서 추적하는 또 다른 것입니다 당신이 사용하는 코인의 수. 당신은 사용하여 이러한 추적 할 수 있습니다 변수를 잘 불렀다. 그리고 루프의 신체 내 것 이러한 변수에 대한 업데이트합니다. 분기 루프, 당신이 완료되면 임에 대한 유사 하나를 사용할 수 있습니다, 등 등, 당신은했습니다 때까지 현금을 모두 반환. 제가 여기 몇 가지 의사 코드를 작성했습니다 시각화하는 데 도움이 얼마나 우리가 논의 과정 번역 할 수 있습니다 C. 당신이 여기에서 보는 바와 같이, 나는 아직도 사용하고 있습니다 영어 단어. 그것은 아직 C가 아닙니다. 그러나 나는 들여 볼거리에 시작했습니다. 안쪽 조건을 넣었습니다 내 괄호. 조금 보이기 시작하고있다 프로그래밍 코드와 같은 비트. 의사 코드는 좋은 방법입니다 자신을 시작합니다. 전에 코드를 시각화 당신은 구문을 찾아보십시오. 때문에 약 종종 가장 어려운 부분 문제는 정말 무엇을 이해하는 것입니다 정확히 할 필요가있다. 당신이 그것을 기록하면, 그것은이다 더 쉽게 기능을 찾아 볼 수 하고 특정 구문 의사 코드의 라인 이되지 않을 수도 있음을 유의하십시오 해골의 종류와 동일 당신이 쓰는 코드. 최적화는 항상있다 할 수 있습니다. 특히 내 의사 코드 당신이 그것을 발견 할 수 있다면, 여기를 참조하십시오. 그러나 본질적으로 공정 생각의 길 우리가 설명한대로입니다. 첫 번째 줄은 얻기 위하여 저희에게 알려줍니다 달러에 일정 금액. 그리고 두 번째는 우리를 알려줍니다 그것은 센트 변환합니다. 그리고, 잠시 분기를 사용할 수있다, 우리 동전의 수를 증가하고 싶은 현금의 양을 감소. 동일은, 10 센트,​​ 센트에 간다 와 동전. 그리고 마지막으로, 우리는 사용자를 말한다 얼마나 많은 동전 우리가 사용됩니다. 좋아요. 그래서 루프 방법을 마칩니다. 이제 모듈 식 방법에 대해 얘기하자, 이는 더 많은 분열과 같다. 우리는 모든 플러스에 대해 잘 알고, 마이너스 증식 및 연산자를 분할 우리에게 사용할 수 있습니다. C는 그 중 네이 있고, 또한이 로 표시되는 나머지 연산자, 퍼센트 기호. 모듈은 정말 깔끔하네요. 그것은에서 당신에게 나머지를 준다 두 숫자를 분할합니다. 긴 분할 메시지를 기억하는 경우 당신은 세 가지로 말하자면, 74 분할? 당신은 10 자리로 시작합니다 3 일곱에가는 것을 알고 두 번 6 개를 만들려면 나머지 하나. 그런 다음 상단에있는 두 개의 쓰기, 그리고 것 이상 들고, 일곱에서 6 빼기 14의 나머지 부분에 과정을 반복합니다. 세에 14 네 번으로 간다 나머지 2 개, 12을 확인하십시오. 그리고 두 사람은 더 이상 이월되지 않습니다. 그래서 두에 남아있을 것입니다 나머지로 바닥. 그리고 그 모듈이주는 무엇, 당신 하단에 그 번호. 그래서 74 세 모듈은 당신에게 두 가지를 줄 것이다. 10 잘하는 두 개의 모듈로 당신이 제로 줄 것이다. 모든 나머지는 없기 때문에 당신이 10를 2로 나눌 때. 여섯 모듈 다섯 잘 다섯 한 번씩 6으로 간다. 그리고, 그것은 하나가 남아있다. 그래서 여섯 모듈 다섯 하나입니다. 그럼 당신은 일곱 모듈이있는 경우 아홉, 당신은 일곱을 얻을 것입니다. 아홉 일곱보다 큰 때문이다. 그래서 일곱에 모든 분할하지 않습니다 답변으로 일곱을 떠나. 당신은 좀 더 모듈로 생각한다면, 그것은 당신에게주는 것을 기억 당신이 뭔가를 나누어 나머지 후. 당신이 할 수있는 방법에 대해 생각 욕심에 사용할 수. 의 사용자가 $ 400.11를 요청 해 봅시다. 알아낼 수있는 방법은 무엇입니까 얼마나 많은 당신이 할 필요없이 필요 분기 각각을 계산? 당신이 파악되면 몇 분기 당신은 $ 400.11를 만들기 위해 사용할 수있는 방법을 많이 유물을 변경? 여기 사이에 아마도 조합 모듈과 분열이 올 것입니다 당신에게 멋진, 우아한주는 편리한 욕심이 문제에 접근. 하지만 기억이 지배 규칙이 여전히 적용됩니다. 항상 가능한 가장 큰 동전을 사용합니다. 당신은 어떻게 계산을 수행 한 후에 많은 동전은 마지막 단계를 사용 의 개수를 인쇄하는 것이다 당신이 계산 된 동전. 지금까지의 p​​rintf를 사용하고있다 끈으로 만 작동합니다. 하지만 당신은에서를 인쇄하거나 할 때 저장된 데이터의 단지 모든 종류의 변수에, 당신은 표시해야 자리 표시자를 사용하여 해당. 여기에 단지 몇 가지 팁을 포함 시켰습니다 값을 인쇄하는 방법에 대한. 당신이 정수가있는 경우에, 당신은 것 % d을 (를)로 사용하여 문자열을 쓰기 자리. 닫는 인용 한 후 마크, 쉼표 (,)를 입력합니다. 그리고 정수에 넣고 것 프린트 할 때 % D의 자리를 차지할. 그래서 번호를 표시 한 후 동전을 사용, 당신은있어 욕심으로 완성되고 있습니다. 모든 코너 케이스를 확인해야합니다, 스타일 조금 정돈, 당신은있어 모든 제출 설정합니다. 이 문제 세트의 끝에, 당신은거야 CS50 더 잘 알고있을 장비, 단말기, 및 루프 C의 구조와 변수 당신은 당신의 방법에 잘입니다. 학습 곡선은 어려운 보일 수있다. 따라서 단계적으로 가지고 간다. 당신이 의사 코드를 작성합니다 다이빙 너무 깊이 전에 익숙하지 않은 구문에. 목록을 할 수 있도록하고, 헤어 작고, 더에 할당 관리 작업. CS50의 자원을 탐구한다. 강의뿐만 아니라, rewatch 이를 통해 도보. 절에주의를 기울이십시오. 반바지를 확인하세요. 반 친구들의 질문을 읽어 에 대해 토론하고, 자신을 게시합니다. P-세트와 행운을 빕니다. 시청 해 주​​셔서 감사합니다. 이것은 욕심이었다. [음악 연주]