1 00:00:00,000 --> 00:00:10,216 >> [Redare a muzicii] 2 00:00:10,216 --> 00:00:12,060 >> ZAMYLA CHAN: Acum, haideți să abordeze Greedy. 3 00:00:12,060 --> 00:00:14,390 Spune că ești un casier, și tu nevoie pentru a da dvs. de client un 4 00:00:14,390 --> 00:00:16,309 anumită cantitate de schimbare. 5 00:00:16,309 --> 00:00:18,820 Ei bine, dacă ați fost un casier lacomi, ai vrea să păstreze toate 6 00:00:18,820 --> 00:00:20,040 monedele pentru tine. 7 00:00:20,040 --> 00:00:24,310 Deci ai oferi clientului schimbarea lor folosind cât mai puține monede posibil. 8 00:00:24,310 --> 00:00:27,640 >> Sarcina ta pentru acest p-set este de a pune în aplicare Lacom, un program care 9 00:00:27,640 --> 00:00:30,530 calculează numărul minim de monede utilizate pentru a face orice 10 00:00:30,530 --> 00:00:31,940 având în vedere cantitatea de schimbare. 11 00:00:31,940 --> 00:00:35,660 Înainte de scufundare în programarea concepte și C sintaxa pentru Greedy, 12 00:00:35,660 --> 00:00:38,410 Să vorbim mai întâi prin Greedy programul, și să vedem dacă ne-am 13 00:00:38,410 --> 00:00:40,570 poate identifica un algoritm. 14 00:00:40,570 --> 00:00:42,560 Amintiți-vă că un algoritm este doar un set de 15 00:00:42,560 --> 00:00:44,680 instrucțiuni pentru rezolvarea problemelor. 16 00:00:44,680 --> 00:00:48,060 Un algoritm de lacomi ar fi doar o set de reguli logice și pașii pe care 17 00:00:48,060 --> 00:00:49,000 putem urmări. 18 00:00:49,000 --> 00:00:52,510 Și ei vor da întotdeauna minim număr de monede necesare. 19 00:00:52,510 --> 00:00:54,340 >> Primul lucru pe care ar trebui să știu este cât de mult schimbarea 20 00:00:54,340 --> 00:00:55,710 este datorată de client. 21 00:00:55,710 --> 00:00:58,560 Pentru acest exemplu, să spunem 0.32 dolari. 22 00:00:58,560 --> 00:01:00,880 Există mai multe modalități de a obține înapoi 0.32 dolari. 23 00:01:00,880 --> 00:01:03,950 Ai putea folosi, de exemplu, 32 mărunțiș. 24 00:01:03,950 --> 00:01:07,560 Sau dacă ai fost un pic lacom în alegerea monede tale, ai putea folosi 25 00:01:07,560 --> 00:01:11,730 cinci monede în loc de 32, oferindu- clientului de trei parale - 26 00:01:11,730 --> 00:01:14,690 0.10 dolari fiecare - și doi bani - 0.01 dolari fiecare. 27 00:01:14,690 --> 00:01:16,830 >> Dar putem face mai bine decât cinci monede? 28 00:01:16,830 --> 00:01:18,990 Putem fi chiar lacomi? 29 00:01:18,990 --> 00:01:20,410 Destul de posibil. 30 00:01:20,410 --> 00:01:23,360 >> Să continua mersul pe jos prin programul Greedy, și a se vedea. 31 00:01:23,360 --> 00:01:27,090 În cazul în care obiectivul dvs. final este de a folosi câteva monede posibil, atunci ar fi cel mai 32 00:01:27,090 --> 00:01:29,680 prudent pentru a utiliza cea mai mare posibile monede. 33 00:01:29,680 --> 00:01:32,410 V-ar da mai degrabă un sfert spate - 0.25 dolari fiecare - 34 00:01:32,410 --> 00:01:33,640 mult de cinci monezi - 35 00:01:33,640 --> 00:01:34,940 0.05 dolari fiecare. 36 00:01:34,940 --> 00:01:38,260 Deci, poate că regula noastră de conducere pentru Greedy poate fi de a utiliza întotdeauna 37 00:01:38,260 --> 00:01:40,590 cea mai mare monedă posibil. 38 00:01:40,590 --> 00:01:43,640 Din trimestre, Dimes, Nickels, și bani, nostru 39 00:01:43,640 --> 00:01:44,830 cea mai mare monedă este trimestru. 40 00:01:44,830 --> 00:01:47,690 Deci, vom încerca să le folosească în primul rând. 41 00:01:47,690 --> 00:01:49,270 >> Înapoi la nostru 0.32 dolari. 42 00:01:49,270 --> 00:01:52,455 Putem folosi un sfert pentru a da Clientul 0.32 dolari? 43 00:01:52,455 --> 00:01:52,930 Da. 44 00:01:52,930 --> 00:01:55,530 Care ne-ar lăsa cu 0.07 dolari la stânga. 45 00:01:55,530 --> 00:01:57,440 >> Putem folosi un alt sfert? 46 00:01:57,440 --> 00:02:00,100 Nu, pentru că 25 este mai mare de șapte. 47 00:02:00,100 --> 00:02:03,470 Noi nu vrem să dea clientului mai mult decât le datorăm. 48 00:02:03,470 --> 00:02:04,190 >> Bine. 49 00:02:04,190 --> 00:02:07,370 Acum, că ne-am epuizat sferturi noastre, Să trecem la cea mai mare următoare 50 00:02:07,370 --> 00:02:09,090 monedă, ban. 51 00:02:09,090 --> 00:02:12,400 Putem folosi un ban pentru a da clientul lor 0.07 dolari înapoi? 52 00:02:12,400 --> 00:02:15,100 Nu, deoarece 10 este mai mare de șapte. 53 00:02:15,100 --> 00:02:18,400 >> Deci, atunci cea mai mare următor moneda accesibil pentru noi este nichel. 54 00:02:18,400 --> 00:02:19,590 Putem folosi un nichel? 55 00:02:19,590 --> 00:02:20,250 Da. 56 00:02:20,250 --> 00:02:22,940 Și atunci vom avea 0.02 dolari la stânga peste. 57 00:02:22,940 --> 00:02:24,910 >> Nu putem folosi un nichel pentru a reveni 0.02 dolari. 58 00:02:24,910 --> 00:02:29,510 Deci, ne-am mutat ultima moneda la dispoziția noastră - penny. 59 00:02:29,510 --> 00:02:33,090 Și după utilizarea doi bani, am fi a plecat cu zero, de cenți, ceea ce înseamnă că 60 00:02:33,090 --> 00:02:36,350 ne-am achitat cu succes înapoi utilizatorul schimbare lor datorate 61 00:02:36,350 --> 00:02:37,830 folosind doar patru monede - 62 00:02:37,830 --> 00:02:40,410 sfert, unul nichel, și doi bani. 63 00:02:40,410 --> 00:02:43,880 >> Puteți rula soluția de personal pentru a vedea dacă regula nostru de guvernare și procesul de dat 64 00:02:43,880 --> 00:02:44,770 ne răspunsul corect. 65 00:02:44,770 --> 00:02:47,820 Pentru cele mai multe seturi de probleme, vei putea pentru a rula soluția de personal pentru a vedea cum 66 00:02:47,820 --> 00:02:49,900 propriul program ar trebui să funcționeze. 67 00:02:49,900 --> 00:02:53,390 Și instrucțiuni specifice vor fi în problema seturi specificatii. 68 00:02:53,390 --> 00:02:57,180 >> Odată ce vom rula soluția de personal, ea ne solicită cât de mult se datorează schimbare 69 00:02:57,180 --> 00:02:59,790 rețineți că aceasta cere Suma în dolari. 70 00:02:59,790 --> 00:03:03,580 Noi intrare 0.32 dolari, 0.32. 71 00:03:03,580 --> 00:03:06,830 Ea ne spune că patru monede sunt datorate, în concordanță cu răspunsul nostru. 72 00:03:06,830 --> 00:03:08,160 Fantastic. 73 00:03:08,160 --> 00:03:10,210 >> Deci, acum, să începem căutarea la punerea în aplicare 74 00:03:10,210 --> 00:03:11,780 algoritmului Greedy. 75 00:03:11,780 --> 00:03:13,410 Noi știm câteva lucruri. 76 00:03:13,410 --> 00:03:17,280 Unul, că vom avea nevoie pentru a solicita de utilizator pentru o sumă de schimbare. 77 00:03:17,280 --> 00:03:20,830 >> Două, că vom dori să urmeze nostru reglementează regulă să utilizați întotdeauna 78 00:03:20,830 --> 00:03:22,990 cea mai mare monedă posibil. 79 00:03:22,990 --> 00:03:26,370 Și trei, de care avem nevoie pentru a ține evidența de cât de multe monede le folosim. 80 00:03:26,370 --> 00:03:30,040 Pentru că în cele din urmă, avem nevoie pentru a imprima numărul de monede pe care le. 81 00:03:30,040 --> 00:03:33,270 >> În primul rând, fapt care ia determinat utilizatorul pentru o sumă de schimbare. 82 00:03:33,270 --> 00:03:36,880 Ori de câte ori te descurci cu datele introduse de utilizator, asigurați- sigur că te gândești la toate a 83 00:03:36,880 --> 00:03:40,010 Cerințe de intrare, și doar accepta de intrare care îndeplinește aceste 84 00:03:40,010 --> 00:03:40,880 cerințe. 85 00:03:40,880 --> 00:03:44,100 În acest caz, ne-am vrea să se ocupe cu o valoare monetară în dolari. 86 00:03:44,100 --> 00:03:48,230 >> Funcțiile GetFloat și getint asigura că intrarea este numeric. 87 00:03:48,230 --> 00:03:51,700 Dar utilizatorul este capabil să intrare Valorile numerice negativ. 88 00:03:51,700 --> 00:03:56,260 Deci, amintiți-vă să utilizați numai non-negativ intrări, care include toate negativ 89 00:03:56,260 --> 00:03:58,370 numere și de zero. 90 00:03:58,370 --> 00:04:00,260 >> În acest caz, intrarea ar trebui să fie un float. 91 00:04:00,260 --> 00:04:01,960 Cu alte cuvinte, un număr zecimal. 92 00:04:01,960 --> 00:04:06,000 Deoarece spec. set problemă necesită te pentru a cere intrarea în dolari. 93 00:04:06,000 --> 00:04:09,540 >> Dar în C, valori în virgulă mobilă nu se poate fi reprezentat cu precizie. 94 00:04:09,540 --> 00:04:12,490 Deoarece există un număr finit de biți cu care să 95 00:04:12,490 --> 00:04:14,870 reprezintă valori infinite. 96 00:04:14,870 --> 00:04:16,860 Ia numărul 0.1. 97 00:04:16,860 --> 00:04:21,140 Dacă ar fi să vă întreb pentru a scrie de 0,1 mână pentru a zecimală suta, 98 00:04:21,140 --> 00:04:24,380 v-ar scrie un 1, urmat de 99 de zerouri. 99 00:04:24,380 --> 00:04:27,080 Ne-am aștepta ca calculatorul nostru ar fi imprima exact același lucru 100 00:04:27,080 --> 00:04:28,330 dacă l-am cerut. 101 00:04:28,330 --> 00:04:30,320 >> Deci, haideți să vedem ce face. 102 00:04:30,320 --> 00:04:33,150 O să revizuiască valorile de imprimare față la sfârșitul acestei plimbare prin. 103 00:04:33,150 --> 00:04:39,270 Pentru moment, a se vedea aici că f% este o substituent pentru un virgulă mobilă. 104 00:04:39,270 --> 00:04:44,530 Dar am specifica dinainte că ne-o dorim 100 zecimale afișate, și apoi o nouă 105 00:04:44,530 --> 00:04:46,506 linie de formatare mai frumos. 106 00:04:46,506 --> 00:04:51,710 >> După șirul, alegem 0.1 ca float pe care dorim să imprimați. 107 00:04:51,710 --> 00:04:56,680 Iar rezultatul, unul, urmat prin niște zerouri, dar apoi o 108 00:04:56,680 --> 00:04:57,980 grămadă de numere. 109 00:04:57,980 --> 00:05:00,470 Desigur, nu cum era de așteptat. 110 00:05:00,470 --> 00:05:03,490 >> Virgulă mobilă imprecizie poate introduce rotunjire erori în dvs. 111 00:05:03,490 --> 00:05:07,330 calculele pe care le va cu siguranță doresc să evite. 112 00:05:07,330 --> 00:05:10,900 Dacă doriți să vedeți mai multe exemple, vă Puteți descărca imprecision.ce From 113 00:05:10,900 --> 00:05:14,880 plimbare prin cod, care este un simplu program care cere plutesc și se imprimă 114 00:05:14,880 --> 00:05:17,550 înapoi la zecimală suta. 115 00:05:17,550 --> 00:05:20,340 Desigur, dacă doriți să arate mai mult sau mai puțin zecimale 116 00:05:20,340 --> 00:05:22,410 vă puteți schimba. 117 00:05:22,410 --> 00:05:25,740 >> După cum veți vedea, deși diferența între cele două este mic, atunci când vei ajunge 118 00:05:25,740 --> 00:05:30,460 la multiplicarea și adăugarea de flotoare, care discrepanță poate adăuga în cele din urmă. 119 00:05:30,460 --> 00:05:31,790 Înapoi la Greedy. 120 00:05:31,790 --> 00:05:34,870 Vom dori, pentru a evita erorile de rotunjire de-a face cu numere întregi. 121 00:05:34,870 --> 00:05:38,090 Deci, după ce ne-am lua de intrare valabil de la utilizatorului, să transforme acest 122 00:05:38,090 --> 00:05:39,550 valoare dolar la cenți. 123 00:05:39,550 --> 00:05:43,420 >> Mental, vom face acest lucru prin înmulțirea valoarea de dolar de 100. 124 00:05:43,420 --> 00:05:46,400 Dar tine minte, din cauza virgulă mobilă imprecizie, dorim să facem 125 00:05:46,400 --> 00:05:48,580 sigur că suntem folosind dreptul de valoare. 126 00:05:48,580 --> 00:05:52,510 Înmulțind cu 100 se va deplasa, în esență, zecimală două spații pentru a 127 00:05:52,510 --> 00:05:56,640 dreapta, taind sau trunchierea nimic după aceea. 128 00:05:56,640 --> 00:05:59,430 >> Dacă joci în jurul cu unele mai mult exemple, veți vedea că nu veți 129 00:05:59,430 --> 00:06:02,980 Trebuie întotdeauna numărul corect, dacă utilizați această metodă de trunchiere. 130 00:06:02,980 --> 00:06:10,011 De exemplu, 12,59 imprimate la 100 zecimale, care vă oferă 131 00:06:10,011 --> 00:06:14,050 12.5899, et cetera. 132 00:06:14,050 --> 00:06:18,460 Veți primi 12.58 dacă trunchiat, Nu 12,59, ca ai nevoie. 133 00:06:18,460 --> 00:06:21,130 >> În schimb, este mai bine pentru a rotunji numărul de primul. 134 00:06:21,130 --> 00:06:23,930 Din fericire, C vine cu functie numita Round. 135 00:06:23,930 --> 00:06:25,040 Este în biblioteca matematica. 136 00:06:25,040 --> 00:06:28,540 >> Dacă vrei să știi cum să folosească Round, atunci puteți aduce manualul sau 137 00:06:28,540 --> 00:06:30,550 pagina de manual pentru această funcție. 138 00:06:30,550 --> 00:06:35,510 Puteți face acest lucru prin tastarea om, pe termen scurt pentru manual, iar apoi funcția pe care o 139 00:06:35,510 --> 00:06:36,620 Vreau să te uiți în sus. 140 00:06:36,620 --> 00:06:42,280 Astfel tastarea în jurul omului în terminalul linie de comandă va aduce manual. 141 00:06:42,280 --> 00:06:44,790 >> Acesta ar putea fi un pic mai greu de descifrat, dar în cele din urmă veți 142 00:06:44,790 --> 00:06:45,660 te obișnuiești cu ea. 143 00:06:45,660 --> 00:06:48,290 Pagini man show vă ce funcția nu, și apoi unele 144 00:06:48,290 --> 00:06:50,170 posibile utilizări ale acestuia. 145 00:06:50,170 --> 00:06:52,340 Te las să exploreze pagina de manual pentru Runda. 146 00:06:52,340 --> 00:06:55,960 Dar știu că îl puteți folosi pentru a rotunji valoarea în timpul de conversie de la 147 00:06:55,960 --> 00:06:57,180 de dolari pentru a cenți. 148 00:06:57,180 --> 00:06:59,690 >> Runda va da înapoi un număr de tip de date dublă. 149 00:06:59,690 --> 00:07:03,810 Și puteți converti sau turnat l la un int ulterior. 150 00:07:03,810 --> 00:07:04,980 Mare. 151 00:07:04,980 --> 00:07:08,120 Până acum ne-am determinat utilizatorul pentru o sumă de bani, și 152 00:07:08,120 --> 00:07:09,520 convertit în cenți. 153 00:07:09,520 --> 00:07:12,410 Acum putem implementa un algoritm care utilizează întotdeauna 154 00:07:12,410 --> 00:07:14,640 mai mari de monede disponibile. 155 00:07:14,640 --> 00:07:17,790 >> Țineți minte că există multiple modalități de a pune în aplicare Greedy, la fel ca 156 00:07:17,790 --> 00:07:21,200 există mai multe modalități de abordare fiecare problemă de informatică. 157 00:07:21,200 --> 00:07:24,040 Găsirea modul cel mai elegant, asta e partea distractivă. 158 00:07:24,040 --> 00:07:27,030 De-a lungul aceste p-seturi, în cazul în care programul tău nu se potrivește exact mea 159 00:07:27,030 --> 00:07:29,190 explicație în walkthroughs, asta e OK. 160 00:07:29,190 --> 00:07:32,870 Dar asigurați-vă doar că trece verificați 50, satisface toate 161 00:07:32,870 --> 00:07:36,270 Cerințe forma caietul de sarcini, și care să ia în considerare dacă dumneavoastră 162 00:07:36,270 --> 00:07:37,670 abordare are un design bun. 163 00:07:37,670 --> 00:07:39,750 >> Cu alte cuvinte, cât de eficient este? 164 00:07:39,750 --> 00:07:44,400 De exemplu, ai de tip repetitiv linii de cod, în loc de a folosi o buclă? 165 00:07:44,400 --> 00:07:47,580 Scrierea de cod cu un design mai bine va fi vin experiență pe măsură ce progresezi 166 00:07:47,580 --> 00:07:49,192 prin curs. 167 00:07:49,192 --> 00:07:52,350 >> Pentru aceasta plimbare prin, voi trece peste două metode care pot fi utilizate pentru a 168 00:07:52,350 --> 00:07:53,540 finaliza Greedy. 169 00:07:53,540 --> 00:07:57,160 Prima metodă este o metodă care utilizează bucle și scădere. 170 00:07:57,160 --> 00:08:00,050 Mai devreme, când am vorbit prin Proces lacomi, ne continuu 171 00:08:00,050 --> 00:08:03,220 verificat dacă am putea folosi un sfert, și folosit un sfert până 172 00:08:03,220 --> 00:08:05,670 valoare rămasă a fost de mai puțin de 0.25 dolari. 173 00:08:05,670 --> 00:08:07,990 >> Acest lucru se traduce bine la o în timp ce structura de buclă. 174 00:08:07,990 --> 00:08:11,550 În timp ce noi putem folosi în continuare un sfert, utilizați una. 175 00:08:11,550 --> 00:08:15,900 Care buclă în timp ce ar trebui să execute cât timp ca valoarea rămasă este mai mare decât 176 00:08:15,900 --> 00:08:18,240 sau egal cu valoarea de un sfert de cent. 177 00:08:18,240 --> 00:08:20,970 Asta înseamnă că veți dori, de asemenea, să urmări de bani rămasă 178 00:08:20,970 --> 00:08:24,570 valoare, și o actualizează în fiecare timpul pe care îl utilizați o monedă. 179 00:08:24,570 --> 00:08:28,350 >> De asemenea, amintiți-vă că la sfârșitul anului, dvs. de ieșire este numărul de monede utilizate. 180 00:08:28,350 --> 00:08:32,400 Deci, un alt lucru pentru a urmări este numărul de monede pe care le utilizați. 181 00:08:32,400 --> 00:08:35,450 Puteți urmări aceste folosind bine numit-variabile. 182 00:08:35,450 --> 00:08:39,730 Și în corpul buclei dumneavoastră ar fi o actualizare a acestor variabile. 183 00:08:39,730 --> 00:08:43,400 Odată ce bucla de trimestru se termină, te se poate utiliza unul similar pentru Dimes, 184 00:08:43,400 --> 00:08:47,180 și așa mai departe și așa mai departe, până când le-ați întors toate de numerar. 185 00:08:47,180 --> 00:08:50,640 >> Am scris niște pseudo-cod aici pentru a vă ajuta să vizualizați cât de 186 00:08:50,640 --> 00:08:55,080 proces am discutat s-ar putea traduce în C. După cum vedeți aici, eu sunt încă utilizați 187 00:08:55,080 --> 00:08:55,760 Cuvinte în limba engleză. 188 00:08:55,760 --> 00:08:56,830 Nu este C încă. 189 00:08:56,830 --> 00:08:58,590 Dar am început să lucruri liniuță. 190 00:08:58,590 --> 00:09:00,690 Am pus condiții în interiorul paranteze mele. 191 00:09:00,690 --> 00:09:03,710 Este începe să arate un pic pic ca cod de programare. 192 00:09:03,710 --> 00:09:06,410 >> Pseudo-cod este o modalitate foarte bună pentru a te început. 193 00:09:06,410 --> 00:09:08,810 Vizualizați codul înainte te uiți în sus sintaxă. 194 00:09:08,810 --> 00:09:12,570 Deoarece de multe ori cea mai grea parte despre o problemă este înțelegerea cu adevărat ceea ce 195 00:09:12,570 --> 00:09:14,450 exact ce trebuie să faceți. 196 00:09:14,450 --> 00:09:17,490 Odată ce ați scrie asta, atunci este o mult mai ușor să se uite în sus funcțiile 197 00:09:17,490 --> 00:09:20,390 și sintaxa specifice pentru dvs. linie de pseudo-cod 198 00:09:20,390 --> 00:09:23,760 >> Țineți minte că acest lucru nu ar putea fi identic cu tipul de schelet de 199 00:09:23,760 --> 00:09:25,560 codul pe care îl scrie. 200 00:09:25,560 --> 00:09:27,640 Există întotdeauna optimizări să se facă. 201 00:09:27,640 --> 00:09:31,250 Și mai ales în mea pseudo-cod aici, vezi dacă poți să-l fața locului. 202 00:09:31,250 --> 00:09:33,380 >> Dar în esență, procesul și modul de gândire 203 00:09:33,380 --> 00:09:35,250 este la fel cum am discutat. 204 00:09:35,250 --> 00:09:38,350 Prima linie ne spune pentru a obține o anumită sumă în dolari. 205 00:09:38,350 --> 00:09:40,960 Iar al doilea ne spune să converti de cenți. 206 00:09:40,960 --> 00:09:45,640 >> Apoi, în timp sferturi pot fi folosite, vom doresc să crească numărul de monede și 207 00:09:45,640 --> 00:09:47,200 reduce cantitatea de numerar. 208 00:09:47,200 --> 00:09:49,880 Același lucru este valabil pentru Dimes, monezi, și mărunțiș. 209 00:09:49,880 --> 00:09:53,230 Și, în sfârșit, ne spune utilizatorului cât de multe monede am folosit. 210 00:09:53,230 --> 00:09:53,750 >> Mare. 211 00:09:53,750 --> 00:09:55,680 Astfel că încheie metoda de buclă. 212 00:09:55,680 --> 00:09:59,720 Acum hai sa vorbim despre metoda modular, care este mai mult ca divizie. 213 00:09:59,720 --> 00:10:03,630 >> Suntem familiarizați cu toate plus, minus, înmulțesc și împart operatorii 214 00:10:03,630 --> 00:10:05,030 disponibile pentru noi. 215 00:10:05,030 --> 00:10:09,060 C are toate cele patru cele, dar are operatorul modulo, reprezentat printr-un 216 00:10:09,060 --> 00:10:10,640 la sută semn. 217 00:10:10,640 --> 00:10:11,940 Modulo este foarte elegant. 218 00:10:11,940 --> 00:10:14,880 Acesta vă oferă restul de la împărțind două numere. 219 00:10:14,880 --> 00:10:19,910 >> Amintiți-vă mesajul divizie lung, atunci când împărțiți, să zicem, 74 de trei? 220 00:10:19,910 --> 00:10:23,510 Începând cu locul zeci, te-ar Știu că 3 intră în șapte 221 00:10:23,510 --> 00:10:27,620 de două ori pentru a face un șase cu rest unul. 222 00:10:27,620 --> 00:10:31,870 Te-ai scrie două în partea de sus, și apoi scade 6 din șapte, care transportă peste 223 00:10:31,870 --> 00:10:34,980 restul de 14 la repeta procesul. 224 00:10:34,980 --> 00:10:39,410 >> Trei merge în 14 de patru ori la face 12, cu rest doi. 225 00:10:39,410 --> 00:10:40,930 Și doi nu mai reporta. 226 00:10:40,930 --> 00:10:44,170 Deci, doi s-ar fi lăsat la de jos ca restul. 227 00:10:44,170 --> 00:10:46,800 >> Și asta e ceea ce dă modulo, te ca număr în partea de jos. 228 00:10:46,800 --> 00:10:49,790 Deci, 74 modulo trei s-ar da doi. 229 00:10:49,790 --> 00:10:52,980 Și 10 modulo doi, bine că s-ar da la zero. 230 00:10:52,980 --> 00:10:56,500 Deoarece nu există nici un rest atunci când vă împărțiți 10 de două. 231 00:10:56,500 --> 00:11:00,190 >> Șase modulo cinci, bine cinci merge în șase dată. 232 00:11:00,190 --> 00:11:01,830 Și apoi a lăsat-o peste. 233 00:11:01,830 --> 00:11:04,720 Deci, șase modulo cinci este unul. 234 00:11:04,720 --> 00:11:07,950 >> Apoi, dacă aveți șapte modulo nouă, veți primi șapte. 235 00:11:07,950 --> 00:11:09,840 Pentru că nouă este mai mare decât șapte. 236 00:11:09,840 --> 00:11:15,020 Deci, nu toate împărți în șapte, lăsând șapte ca răspunsul dumneavoastră. 237 00:11:15,020 --> 00:11:18,340 >> Dacă te gândești la modulo un pic mai mult, amintiți-vă că vă dă 238 00:11:18,340 --> 00:11:21,020 restul după ce împărți ceva. 239 00:11:21,020 --> 00:11:23,620 Gândiți-vă cum s-ar putea fi capabil să-l folosească în Greedy. 240 00:11:23,620 --> 00:11:27,620 Să presupunem că utilizatorul cere pentru 400.11 dolari. 241 00:11:27,620 --> 00:11:30,470 Ce este o modalitate de a da seama cât de multe sferturi de care aveți nevoie, fără a fi nevoie să 242 00:11:30,470 --> 00:11:32,360 conta fiecare unul? 243 00:11:32,360 --> 00:11:37,480 >> Odată ce îți dai seama cât de multe trimestre puteți folosi pentru a face 400.11 dolari, cât de mult 244 00:11:37,480 --> 00:11:38,880 schimba rămâne? 245 00:11:38,880 --> 00:11:42,110 Poate că o combinație între aici modulo și divizare ar veni în 246 00:11:42,110 --> 00:11:46,200 la îndemână pentru a vă oferi o rece, elegant abordare a problemei Greedy. 247 00:11:46,200 --> 00:11:49,030 Dar amintiți-vă că guvernarea regulă se aplică în continuare. 248 00:11:49,030 --> 00:11:51,610 Folosiți întotdeauna cea mai mare moneda posibil. 249 00:11:51,610 --> 00:11:55,340 >> Odată ce ați făcut calculul de modul în care multe monede de a utiliza, ultimul pas 250 00:11:55,340 --> 00:11:57,930 este de a imprima numărul de monede pe care le calculate. 251 00:11:57,930 --> 00:12:01,610 Până în prezent, am fost folosind printf funcționeze exclusiv pentru siruri de caractere. 252 00:12:01,610 --> 00:12:05,200 Dar, atunci când doriți să imprimați o în, sau orice fel de tip de date care este stocat 253 00:12:05,200 --> 00:12:09,200 într-o variabilă, trebuie să indice că folosind un substituent. 254 00:12:09,200 --> 00:12:12,400 >> Aici am inclus doar câteva sfaturi cu privire la modul de a imprima valori. 255 00:12:12,400 --> 00:12:16,390 Dacă aveți un întreg, v-ar scrie șir folosind% d ca o 256 00:12:16,390 --> 00:12:17,450 înlocuitor. 257 00:12:17,450 --> 00:12:20,170 După ce cotația de închidere marca, introduceți o virgulă. 258 00:12:20,170 --> 00:12:24,530 Și a pus apoi în întreg care va să ia locul de% d, atunci când tipărite. 259 00:12:24,530 --> 00:12:27,150 >> Deci, după afișarea numărului de monede utilizate, esti 260 00:12:27,150 --> 00:12:28,500 a terminat cu Greedy. 261 00:12:28,500 --> 00:12:32,000 Asigurați-vă că pentru a verifica toate cazurile de colt, curețe stilul tau un pic, și tu ești 262 00:12:32,000 --> 00:12:33,350 gata să-și prezinte. 263 00:12:33,350 --> 00:12:36,000 La sfârșitul acestui set de probleme, veți fi mult mai familiarizați cu CS50 264 00:12:36,000 --> 00:12:39,940 aparat, terminalul, și bucla structuri și variabile în C. 265 00:12:39,940 --> 00:12:41,470 >> Ești pe drumul cel bun. 266 00:12:41,470 --> 00:12:43,040 Curba de învățare poate părea greu. 267 00:12:43,040 --> 00:12:44,690 Deci, ia-o pas cu pas. 268 00:12:44,690 --> 00:12:47,110 Asigurați-vă că scrie în pseudo-cod înainte de scufundare prea adânc 269 00:12:47,110 --> 00:12:49,000 în sintaxa necunoscut. 270 00:12:49,000 --> 00:12:52,030 >> Face-o pentru a face lista, și te desparți de cesiune în mai mici, mai 271 00:12:52,030 --> 00:12:53,440 sarcini de gestionat. 272 00:12:53,440 --> 00:12:55,810 Explorați toate resursele CS50. 273 00:12:55,810 --> 00:12:58,270 În plus față de curs, rewatch această plimbare prin. 274 00:12:58,270 --> 00:12:59,790 >> Să acorde o atenție aproape de secțiune. 275 00:12:59,790 --> 00:13:00,710 A verifica afară de pantaloni scurți. 276 00:13:00,710 --> 00:13:04,640 Citiți întrebările colegii dumneavoastră " pe Discutați, și posta ta. 277 00:13:04,640 --> 00:13:06,110 >> Cel mai bun de noroc cu p-set. 278 00:13:06,110 --> 00:13:07,200 Și mulțumiri pentru vizionarea. 279 00:13:07,200 --> 00:13:08,690 Acest lucru a fost Greedy. 280 00:13:08,690 --> 00:13:15,691 >> [Redare a muzicii]