CP käsiraamat on kõigile konkurentsivõimelise programmeerimise austajatele üks koht, kuna see sisaldab kõiki algoritme ja andmestruktuure. Samuti sisaldab iga teema näiteid ja lahendamata probleeme praktika jaoks.
Konkurentsivõimeline programmeerimine on sport, ma mõtlen seda sõna otseses mõttes. Võtke sporti, mõelgem selle jaoks kriketit, kõnnite esimest korda nahkhiirega. Kiige ja möödalaskmine, tehke seda paar korda ja lõpuks lüüakse üks üle köite. Mõelge programmeerimisvõistlusele metafooriliselt kriketimänguks. Koostage kood ja saatke, võite saada WA (Wrong Answer).
Tehke koodis muudatusi ja lõpuks saate oma esimese AC (aktsepteeritud / õige vastus). Lubage mul tutvuda, umbes 20% programmeerimisvõistluse küsimustele on lihtsa inglise keele lihtne muundamine teie lemmik programmeerimiskeele koodiks.
Jalutades selle juurde, õpid kirjutamata mängureegleid, kui mängite kõvemini ja muutute paremaks.
Ja uskuge mind, te ei pea alustamiseks teadma ühtegi väljamõeldud nime algoritmi ega andmestruktuuri. Kas olete kunagi kuulnud “Waft shotist”, olete ikkagi oma tänava parim lööja, eks?
Olgu, vallutagem esimesed 20% programmeerimisprobleemidest.
Sa pead teadma:
Vahepealne ühe programmeerimiskeele hoidmine
Inglise! Teisenda inglise keel koodiks!
Võtame selle taseme näiteprobleemi: Kohutav Chandu
Kõik, mida peate tegema, on lugeda sisestusrea STDIN-ist ja printida selle rea tagurpidi versioonile STDOUT. Minge edasi, tehke esitamine. Otsige oma esimest vahelduvvoolu. Tahad rohkem? Meie praktikaosas on koormusi. Otsige neid, kus oleks tuhandeid õigeid esildisi.
Okei, nüüd olete valmis vastu võtma tõelise väljakutse. Hoidke tihedalt kinni, me sukeldame sügavamale.
Sa pead teadma:
1. Sorteerimise ja otsimise algoritmid
2. Räsimine
3. Arvu teooria
4. Ahne tehnika
Veelgi olulisem on, et peate välja mõtlema, mida, millal ja kus neid rakendada. See on tõesti keeruline ja seega aitab algajatel enesekindlustunnet saada, korraldades Code Monki nimelisi konkursseeriaid. Enne igat võistlust anname välja õpetused mingil teemal ja hiljem on konkursil probleemid suunatud ainult sellele konkreetsele teemale. Ma soovitaksin teil tutvuda õppematerjalidega ja lahendada mõlemal teemal üks või kaks küsimust.
Nüüdseks olete aru saanud, et küsimused on kujundatud selleks, et petta meie mõtteviisi. Mõnikord, kui teisendate tavalise inglise keele koodiks, jõuaksite otsuseni TLE (ajapiirang ületatud). Ajapiirangutega toimetulemiseks peate õppima uute tehnikate ja algoritmide komplekti. Teatud juhtudel tuleb appi dünaamiline programmeerimine (DP). Tegelikult võiksite seda tehnikat juba intuitiivselt kasutada. Kõigil võistlustel on alati vähemalt üks küsimus, mille DP saab lahendada.
Samuti oleksite märganud, et on küsimusi, mida ei saa lihtsalt lahendada lineaarmaatriksi andmestruktuuridega.
1. Graafikute teooria
2. Disjoint Set Union (liidu leid)
3. Minimaalne kattepuu
Need andmestruktuuride komplektid viivad teid üsna kaugele. Pealegi oleksite mõelnud, et tõeline kunst on mõne küsimuse lahendamiseks tuntud meetodite muutmine. Kõiki lihtsa ja keskmise raskusega küsimusi saab sel viisil lahendada.
Olete kõik seatud lühikese programmeerimise väljakutsete edetabelite tippu, hoidke lihtsalt püsivust. Nagu ma juba mainisin, on see sport, te ei valda seda enne, kui seda tegelikult teete. Minge edasi, osalege lühivõistlusel, teadke oma tugevusi, nõrkusi ja vaadake, kuidas käsitsete adrenaliinirežiimi, kui kell tiksub.
Pidage kinni nii kaua kui võimalik oma loogikast, jõuate lõpuks välja lahenduseni sarnase algoritmiga sarnase lahenduseni. Peate selle lihtsalt üle pintseldama. Mitmed neist meetoditest aitavad teil lahendada mõnda raskeimat ümbritsevat probleemi.
1. Segmendi puu
2. Stringialgoritmid
3. Proovib, Suffix Tree, Suffix Array.
4. Raske valguse lagunemine
5. Graafiku värvimine, võrguvoog
6. Sqrt lagunemine.
Nii et laadige alla see CP käsiraamat ja nautige uute asjade õppimist. Ärge unustage ka vähem aega keerukusega kodeerida.
Värskendatud:
21. märts 2021