Pe fiecare nivel din arboerele de cautare incerci sa completezi doar o casuta goala luand in considerare informatiile pe care le ai in solutia actuala. Pentru solutiile care respecta regulile jocului poti continua cautarea si pe nivelul urmator (urmatoarea casuta goala). Nu stiu cat de bine e explicat, da' alte cuvinte n-am la mine momentan.
Si eu sunt de acord ca merita. Da' sunt unii care duc ideea la extrem, pierzand mai mult timp sa scrie teste decat sa scrie cod, pentru ca vor ei sa acopere toate cazurile (ceea ce poate fi imposibil). Eu nu as face TDD simplu.
In aceeasi situatie am fost si eu in clasa a 9-a (locul 2 sau 3 la OJI si nu m-am calificat). Singura metoda ca sa ajungi sa fii bun e sa lucrezi foarte mult (infoarena, campion, topcoder, codeforces) si sa-ti placa sa inveti ceva din fiecare problema rezolvata. Eu aveam impresia ca este de ajuns sa ai talent si sa te prinzi rapid de algoritmi, da' m-am convins ca nu e chiar asa. Dupa ce rezolvi cateva sute de probleme atunci iti vin imediat idei si la altele. Mult succes!
In primul rand, eu nu as face niciodata development pe MSWindows. Cand nu e necesar sa fac refactoring/debug pe proiecte mari scriu mereu in vim. Ca IDE folosesc IntelliJ (este mult peste eclipse dupa parerea mea).
Din moment ce stii sa programezi pe obiecte poti sa intelegi orice pattern. Chiar nu vad ce-i greu in a intelege/aplica un pattern. Unele dintre ele sunt chiar banale, declari o interfata cu o metoda si implementezi metoda in subclasa (vezi Strategy Pattern). Decorator Pattern mi se pare chiar frumos si elegant sa-l folosesti cand chiar ai nevoie de el. Mult mai greu e sa gandesti arhitectura unui software cap-coada sau sa implementezi algoritmi complecsi.
Nu am folosit ubuntu de mult, dar cred ca-ti genereaza o parola default pentru root. Ca sa devii root poti apela: sudo su dupa care introduci parola user-ului tau. Pentru a porni serverul de ssh, ai putea sa cauti pe google.
Nu m-am uitat pe toate solutiile, doar pe prima, care e si gresita. Testul gresit: n = 3 bancnota 1 = 1 bancnota 2 = 7 bancnota 3 = 10 s = 24 Bancnota 10 de 2 ori. Bancnota 1 de 4 ori. Ar trebui sa arate asa: n = 3 b1 = 1 b1 = 7 b1 = 10 s = 24 Numarul minim de bancnote 3 bancnota de 7 de 2 ori bancnota de 10 de 1 ori Cum am mai zis, rezolvarea are nevoie ori de programare dinamica(solutia optima) ori de backtracking(solutie care ruleaza sute de ani pentru valori mari ale lui N). PS. Pentru challenge-uri cu teste adevarate: http://www.infoarena.ro/
Solutia optima e cu programare dinamica. Backtracking ai folosi daca ti-ar cere sa arati toate modalitatiile in care se poate plati suma cu bancnotele respective.