1 00:00:00,000 --> 00:00:13,070 2 00:00:13,070 --> 00:00:13,715 >> ROB BOWDEN: Kaixo. 3 00:00:13,715 --> 00:00:17,800 Nago Rob, eta espero dut zure 15 joko jokoa. 4 00:00:17,800 --> 00:00:22,040 Orain, ez dira behar dituzun lau funtzio programa hau ezartzeko - init, 5 00:00:22,040 --> 00:00:24,650 marraztu, mugitzeko, eta irabazi. 6 00:00:24,650 --> 00:00:27,230 Beraz, dezagun init at. 7 00:00:27,230 --> 00:00:32,930 >> Hemen, lehenengo gauza garela ikusiko dugu joan egiten da aldagai bat izendatuko 8 00:00:32,930 --> 00:00:34,600 counter deitzen. 9 00:00:34,600 --> 00:00:37,620 Honez hasieratu egingo ken d aldiz d 1era. 10 00:00:37,620 --> 00:00:40,200 Gogoratu d dimentsioa dela gure taula. 11 00:00:40,200 --> 00:00:43,840 Nola init da lanera joan da joan taula osoa zehar batetik bestera joateko 12 00:00:43,840 --> 00:00:46,050 eta ari gara hasteko goiko ezkerreko. 13 00:00:46,050 --> 00:00:48,570 >> Eta utzi, besterik gabe esan dugu 4 eta 4 taula bat. 14 00:00:48,570 --> 00:00:51,220 Beraz goian utzi gara esan du 15 da. 15 00:00:51,220 --> 00:00:53,960 Eta gero ari gara zenbatu joan oholak bitartez, esanez, 15, 14, 13, 16 00:00:53,960 --> 00:00:58,510 12, 11, 10, 9, 8, 7, 6, 5, 4, eta abar. 17 00:00:58,510 --> 00:01:03,780 Beraz, goiko ezkerreko, d aldiz izatea espero dugu d ken 1, 4 parte horietatik 4 by 18 00:01:03,780 --> 00:01:08,290 kasuan 16 ken izango da 1, eta 15 da behar bezala. 19 00:01:08,290 --> 00:01:10,885 >> Eta orain hemen non goaz taula osoa zehar batetik bestera joateko. 20 00:01:10,885 --> 00:01:14,720 Eta ari gara posizio bakoitzean ezartzeko joan egungo balioa taula 21 00:01:14,720 --> 00:01:19,090 Gure counter, eta gero kontraerasoan va ra decrement, beraz, hurrengo 22 00:01:19,090 --> 00:01:22,300 posizio iritsiko gara da behar joan kontagailu baino bat gutxiago 23 00:01:22,300 --> 00:01:23,690 aurreko posizioa. 24 00:01:23,690 --> 00:01:26,970 Beraz, hasieran izan genuen 15 eta decrement kontraerasoan. 25 00:01:26,970 --> 00:01:30,065 Beraz, ondoren ari gara 14 esleitu joan hurrengo posizioa, decrement counter, 26 00:01:30,065 --> 00:01:33,710 eta esleitutako goaz 13, eta abar. 27 00:01:33,710 --> 00:01:37,620 >> Azkenik, ertz horiek kudeatzeko behar dugu Kasu non, taula bat ere badauka 28 00:01:37,620 --> 00:01:44,450 dimentsioa, orduan besterik egiten 15, 14, 13, 12, modu guztiak 3 behera, 2, 1, da 29 00:01:44,450 --> 00:01:46,780 guri utzi batera joan unsolvable taula bat. 30 00:01:46,780 --> 00:01:49,390 Eta 1 eta 2 aldaketa bat behar dugu. 31 00:01:49,390 --> 00:01:52,930 Beraz, d mod 2 funtzioak 0 itzultzen bada, hori da nola ari gara, egiaztatu egingo 32 00:01:52,930 --> 00:01:54,410 are gehiago, bada ikusteko. 33 00:01:54,410 --> 00:01:59,810 D mod 2 berdinen bada 0, orduan ilara d minus in 1, eta horrek beheko errenkadan, eta 34 00:01:59,810 --> 00:02:05,430 d posizio d ken 2, edo zutabe ken 2, esaten ari gara ezartzeko 2 joan, eta 35 00:02:05,430 --> 00:02:07,860 Zutabe d ken 3 gaude Eta 1 'ezarrita joan. 36 00:02:07,860 --> 00:02:12,170 Beraz, hori besterik ez alderantzizkoa non 1 eta 2 egun bizi duten. 37 00:02:12,170 --> 00:02:16,270 >> Azkenik, oso ezarri goaz beheko eskuineko hutsik berdina, non 38 00:02:16,270 --> 00:02:20,700 hutsik izan hash zehaztutako top 0 gisa hartan. 39 00:02:20,700 --> 00:02:26,785 Beraz, hori ez zen erabat beharrezkoa, geroztik hau loop da behar joan 40 00:02:26,785 --> 00:02:30,610 behean 0 eskubidea, geroztik ezarri counter naturalean helduko 0. 41 00:02:30,610 --> 00:02:34,610 Baina gutako oinarritzen jakitea hutsik hashed zen 0 bat aurkitzeko. 42 00:02:34,610 --> 00:02:38,280 Joan nintzen, bada, programa honetan sartu eta geroago goialdean hutsik aldatu 100 dutenean, baina 43 00:02:38,280 --> 00:02:39,770 oraindik ere lan egin behar. 44 00:02:39,770 --> 00:02:43,180 >> Beraz, hau da, besterik gabe, ziurtatu egiten du beheko eskuineko da, benetan berdina gure 45 00:02:43,180 --> 00:02:44,870 balioa hutsik. 46 00:02:44,870 --> 00:02:50,270 Azkenik, bi aldagai global dugu, beraz, hutsik i eta j hutsik, eta ikusiko dugu 47 00:02:50,270 --> 00:02:53,360 goialdean deklaratu dutenak. 48 00:02:53,360 --> 00:02:56,270 Eta ari gara bi global horiek erabili joan aldagai segimendua egiteko 49 00:02:56,270 --> 00:02:59,040 hutsik posizioa, beraz, ez dugu ra bidez osoa begiratu behar 50 00:02:59,040 --> 00:03:03,890 taula hutsik bakoitza aurkitzeko denbora mugimendu bat egiten saiatzen gara. 51 00:03:03,890 --> 00:03:08,450 Beraz, hutsik posizioa beti da hemen beheko eskuineko etan hasiko dugu. 52 00:03:08,450 --> 00:03:13,270 Beraz beheko eskuineko da emandako indizeek d ken 1, d ken 1. 53 00:03:13,270 --> 00:03:14,880 Beraz, hori init da. 54 00:03:14,880 --> 00:03:17,040 >> Orain mugitzen dugu marrazteko. 55 00:03:17,040 --> 00:03:19,370 Beraz, zozketa da antzekoa izango da non ari gara batetik bestera joateko joan 56 00:03:19,370 --> 00:03:20,970 taula osoa zehar. 57 00:03:20,970 --> 00:03:25,400 Eta besterik balioa inprimatu nahi dugu duten taula posizio bakoitzean da. 58 00:03:25,400 --> 00:03:29,580 Beraz, hemen, balioa hori da inprimatzeko ari gara batzordeko posizio bakoitzean. 59 00:03:29,580 --> 00:03:32,280 Eta konturatu egiten ari garen hori -. 60 00:03:32,280 --> 00:03:37,410 Eta hori besterik ez printf kontatzea one digitu bat edo ez bada kontuan hartu gabe 61 00:03:37,410 --> 00:03:42,010 bi digitu zenbakia, oraindik ere nahi dugu horri hartzen dute bi zutabe inprimatu daudelarik, 62 00:03:42,010 --> 00:03:46,290 beraz, ez dugu bi digitu eta bat bada digitua taula berean zenbakiak, gure 63 00:03:46,290 --> 00:03:49,450 taula oraindik ere itxura izango polita eta karratu. 64 00:03:49,450 --> 00:03:54,190 >> Beraz, ez da egin behar, balio bakoitzerako nahi dugu taula batean, hutsik izan ezik. 65 00:03:54,190 --> 00:03:58,260 Beraz, taula posizioa berdin bada hutsik, eta gero berariaz dugun 66 00:03:58,260 --> 00:04:01,730 besterik azpimarraz inprimatu nahi hutsik adierazteko, ordez 67 00:04:01,730 --> 00:04:05,150 edozein dela ere-balioa hutsik benetan da. 68 00:04:05,150 --> 00:04:08,500 >> Azkenik, inprimatu nahi dugu lerro berri bat. 69 00:04:08,500 --> 00:04:11,970 Iragarki hori da, oraindik ere barrutik loop kanpoaldeko, baina kanpotik 70 00:04:11,970 --> 00:04:13,200 loop barne. 71 00:04:13,200 --> 00:04:17,930 Geroztik kanpoaldeko hau loop errepikatzean da errenkadetan osoan zehar, eta beraz printf hau da 72 00:04:17,930 --> 00:04:22,130 linea berri bat besterik ez inprimatu, beraz, egingo dugu mugitu hurrengo errenkadan inprimatu. 73 00:04:22,130 --> 00:04:23,910 Eta hori da zozketa egiteko. 74 00:04:23,910 --> 00:04:27,770 >> Beraz, gaur egun dezagun aurrera eraman. 75 00:04:27,770 --> 00:04:32,590 Orain, mugitu pasatzen dugu, fitxa hori Erabiltzaileak dago jokoan sartu - dute 76 00:04:32,590 --> 00:04:36,360 sartu mugitu nahi dute fitxa - eta zauden ustezko bool bat itzultzeko, beraz, 77 00:04:36,360 --> 00:04:39,300 bai egia edo gezurra, arabera mugimendua izan zen benetan ala ez 78 00:04:39,300 --> 00:04:43,360 baliozko - ala fitxa hori izan daiteke espazio hutsik eraman. 79 00:04:43,360 --> 00:04:48,340 >> Beraz, hemen, tokiko aldagai bat aldarrikatzen dugu, tile_1 eta tile_j, diren joan 80 00:04:48,340 --> 00:04:52,150 blank_i eta blank_j antzekoa izango, ezik nik segimendua joan 81 00:04:52,150 --> 00:04:54,910 teila posizioa. 82 00:04:54,910 --> 00:05:00,370 Orain hemen, blank_i erabili goaz eta blank_j eta guztiak ondo esan, beraz, 83 00:05:00,370 --> 00:05:01,930 hemen taula gainean hutsik egin. 84 00:05:01,930 --> 00:05:04,420 >> Orain, hutsik gainetik fitxa da? 85 00:05:04,420 --> 00:05:06,210 Hutsik ezkerraldeko fitxa da? 86 00:05:06,210 --> 00:05:07,420 Hutsik eskuinean dagoen fitxa da? 87 00:05:07,420 --> 00:05:08,970 Hutsik beheko fitxa da? 88 00:05:08,970 --> 00:05:13,330 Beraz, fitxa horietako edozein bada posizioak, gero badakigu fitxa 89 00:05:13,330 --> 00:05:16,390 be hutsik spot eraman dezake eta hutsik utzi behar da mugi daitezke bertan 90 00:05:16,390 --> 00:05:18,240 Une teila da. 91 00:05:18,240 --> 00:05:26,400 >> Beraz, hemen, esango dugu bada posizioan taula blank_i ken 1 blank_j. 92 00:05:26,400 --> 00:05:31,120 Beraz, hau da esaten fitxa da egungo hutsik gainetik? 93 00:05:31,120 --> 00:05:34,350 Eta hala bada, gogoratzen goaz duten baldosa posizioa da. 94 00:05:34,350 --> 00:05:37,870 Fitxa posizio blank_i da ken 1 eta blank_j. 95 00:05:37,870 --> 00:05:40,660 orain, lehen, ere check hau dugu hementxe, beraz blank_i da 96 00:05:40,660 --> 00:05:41,760 0 baino handiagoa. 97 00:05:41,760 --> 00:05:43,410 >> Zergatik ez da egin nahi dugu? 98 00:05:43,410 --> 00:05:47,290 Beno, hutsik goiko errenkadan, ez bada taula, ondoren, ez dugu nahi 99 00:05:47,290 --> 00:05:51,240 fitxa hutsik geroztik gainetik begiratu ez dago ezer goiko gainetik dago 100 00:05:51,240 --> 00:05:52,430 taula ilara. 101 00:05:52,430 --> 00:05:55,950 Hau da, nola amaituko dezakezu lortzean segmentaziuo hutsegitea edo antzeko zerbait 102 00:05:55,950 --> 00:05:59,030 Zure programa agian besterik lan modu espero. 103 00:05:59,030 --> 00:06:04,310 Beraz, hau da, ziur ez dugula egiten baliogabeak lekuetan begiratuz. 104 00:06:04,310 --> 00:06:08,470 >> Orain ari gara gauza bera egin zuen joan posible beste konbinazio guztiak. 105 00:06:08,470 --> 00:06:13,250 Beraz, hemen, gaude hutsik beheko bilatzen dugu duten fitxa bat bada ikusteko. 106 00:06:13,250 --> 00:06:16,950 Eta, gainera, ez dugu ziur gaude egiteko Ez beheko ilaran, edo bestela dugu 107 00:06:16,950 --> 00:06:18,910 ez luke fitxa bat aurkitu. 108 00:06:18,910 --> 00:06:25,040 Hemen, ezkerrean dagoen begiratu goaz fitxa bada ikusteko hutsik egin. 109 00:06:25,040 --> 00:06:27,860 Eta guk behar ez ezkerrera begiratu Oraindik dugu bada zutabe ezkerreko in. 110 00:06:27,860 --> 00:06:30,100 Eta hemen ari gara hemen begiratzen joan eskuinaldetik zuriz du, eta ez behar dugu 111 00:06:30,100 --> 00:06:33,340 eskuinera begiratu Oraindik badugu fitxaren eskuinaldeko zutabean. 112 00:06:33,340 --> 00:06:37,820 >> Beraz, gauza horiek ere ez ziren egia bada, horrek esan nahi du fitxa ez zen aldameneko 113 00:06:37,820 --> 00:06:39,640 hutsik eta faltsua itzuli ahal izango dugu. 114 00:06:39,640 --> 00:06:41,230 Mugimendua ez da zuzena. 115 00:06:41,230 --> 00:06:47,010 Baina, horietako bat egia balitz, orduan at Puntu honetan, tile_i dela badakigu eta 116 00:06:47,010 --> 00:06:50,540 tile_j berdina dira teila posizioa. 117 00:06:50,540 --> 00:06:55,210 Eta, beraz, taula eguneratu ahal izango dugu at posizioak tile_i eta tile_j. 118 00:06:55,210 --> 00:06:59,820 Ezagutzen dugun balio berria hutsik izango da eta posizio blank_i du 119 00:06:59,820 --> 00:07:02,950 blank_j, zein jatorrizkoa zen blank - badakigu fitxa da, joan 120 00:07:02,950 --> 00:07:04,030 mugitu han. 121 00:07:04,030 --> 00:07:07,610 >> Nabarituko Egia esan, ez dugu egin bat benetako swap hemen, badakigu geroztik 122 00:07:07,610 --> 00:07:09,850 txertatuko behar duten baloreak posizio horiek sartu. 123 00:07:09,850 --> 00:07:13,780 Ez dugu behar aldi baterako aldagai inguruan. 124 00:07:13,780 --> 00:07:16,920 >> Azkenik, dugula gogoratu behar dugu daudela gure aldagai global izan 125 00:07:16,920 --> 00:07:18,980 posizioa jarraipena blank du. 126 00:07:18,980 --> 00:07:22,780 Beraz, posizioa eguneratu nahi dugu hutsik non fitxa izateko 127 00:07:22,780 --> 00:07:24,190 jatorriz izan zen. 128 00:07:24,190 --> 00:07:27,680 Azkenik, egia itzuliko gara geroztik mugimendua arrakastatsua izan zen. 129 00:07:27,680 --> 00:07:31,110 Arrakastaz trukatu dugu fitxa batera hutsik. 130 00:07:31,110 --> 00:07:34,890 >> Ondo da, beraz, azkena dugu irabazi egiaztatu behar. 131 00:07:34,890 --> 00:07:39,900 Beraz, irabazi antzera boolearra itzultzen du non Egia da adierazi egingo duen 132 00:07:39,900 --> 00:07:41,460 Erabiltzaileak jokoa irabazi du. 133 00:07:41,460 --> 00:07:43,780 Eta faltsua adierazten duten Jokoan, oraindik ere egingo. 134 00:07:43,780 --> 00:07:46,340 Erabiltzaileak ez du irabazi. 135 00:07:46,340 --> 00:07:52,100 Beraz, hau da, nahiko askoz izango da init kontrakoa, non init, 136 00:07:52,100 --> 00:07:56,920 gogoratu, taula hasieratu dugu 15, 14, 13, 12, abar. 137 00:07:56,920 --> 00:08:03,000 Irabazi zuen, berriz, begiratu nahi dugu bada taula 1, 2, 3, 4, 5, eta abar da. 138 00:08:03,000 --> 00:08:06,600 >> Beraz, hasieratu goaz gure 1 kontraerasoan geroztik hori da goian 139 00:08:06,600 --> 00:08:08,400 taula ezkerrean izan behar du. 140 00:08:08,400 --> 00:08:10,860 Eta gero ari gara begizta joan taula osoa zehar. 141 00:08:10,860 --> 00:08:13,690 Dezagun ahaztu egoera honen bigarren bat. 142 00:08:13,690 --> 00:08:18,410 Eta baldintza hori besterik ez da joan txeke posizio honetan taula da 143 00:08:18,410 --> 00:08:20,790 egungo zenbatzen berdina? 144 00:08:20,790 --> 00:08:27,040 Hala bada, Kontatzailea zenbaketa horrela hurrengo posizio begiratzen dugu bat altuagoa 145 00:08:27,040 --> 00:08:29,690 posizioa batzuk Hemen dugu oraintxe baino. 146 00:08:29,690 --> 00:08:32,700 >> Beraz, nola lortuko dugu Goiko ezkerreko 1 izan behar du. 147 00:08:32,700 --> 00:08:33,950 Aldaketa Kontatzailea 2. 148 00:08:33,950 --> 00:08:35,010 Begiratu hurrengo posizioan. 149 00:08:35,010 --> 00:08:35,690 Hau da 2? 150 00:08:35,690 --> 00:08:37,659 Hala bada, Kontatzailea Aldaketa 3. 151 00:08:37,659 --> 00:08:39,179 Hurrengo posizioa, da 3 hau? 152 00:08:39,179 --> 00:08:42,440 Hala bada, Kontatzailea zenbaketa 4, eta abar. 153 00:08:42,440 --> 00:08:49,190 Beraz, bada ez da posizioa edozein da horrek ez du gure kopuruan berdinak taula, 154 00:08:49,190 --> 00:08:52,640 Orduz geroztik faltsua itzuli nahi dugu esan nahi du ez dela teila batzuk 155 00:08:52,640 --> 00:08:55,490 Ez posizio egokian jartzea. 156 00:08:55,490 --> 00:08:58,810 >> Beraz, hemen, zer egiten ari da egoera hau? 157 00:08:58,810 --> 00:09:02,170 Beno, gogoratu hutsik dagoela hemen beheko eskuineko joan ustezko. 158 00:09:02,170 --> 00:09:06,180 Eta hutsik balio Mightn'ten balioari nahitaez berdinak 159 00:09:06,180 --> 00:09:11,080 hori iritsi egingo kontraerasoan behean eskuinean. 160 00:09:11,080 --> 00:09:15,760 Beraz, zehazki begiratu nahi badugu i berdinen d ken 1 eta j berdin berdin 161 00:09:15,760 --> 00:09:19,470 berdinen d ken 1 - zein da esaten badugu dira behean eskuinean begira 162 00:09:19,470 --> 00:09:22,050 taula - orduan besterik ez dugu Jarraitu nahi. 163 00:09:22,050 --> 00:09:26,200 Bereziki hau albo batera utzi nahi dugu begizta egiteko iterazio. 164 00:09:26,200 --> 00:09:31,250 >> Eta, beraz, honen bidez lortu kudeatzeko badugu loop habiaratu, horrek esan nahi du 165 00:09:31,250 --> 00:09:34,690 ez zegoen teila no horretan zegoen okerreko posizioan. 166 00:09:34,690 --> 00:09:38,900 Eta begizta hautsi dugu, eta etorri Hemen, non egia itzuli ahal izango dugu. 167 00:09:38,900 --> 00:09:41,800 Teila guztiak posizio egokian ziren eta horrek esan nahi du erabiltzaileak ditu 168 00:09:41,800 --> 00:09:43,230 jokoa irabazi. 169 00:09:43,230 --> 00:09:44,460 Eta hori da. 170 00:09:44,460 --> 00:09:46,550 Nire izena Rob Bowden da, eta hau 15 zen. 171 00:09:46,550 --> 00:09:52,726