• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

C/C++ do algorytmiki typu SPOJ

42 Warsaw Coding Academy
0 głosów
572 wizyt
pytanie zadane 24 grudnia 2019 w C i C++ przez Teslum_369 Gaduła (4,190 p.)
Witam!

Ostatnimi czasy bardzo podoba mi się serwis typu SPOJ przez swoje problemy-łamogłówki. No właśnie, czasami potrafią połamać głowę aż nadzbyt. Szukam odpowiedzi na pytania, jak lepiej i krócej rozwiązywać te zadanka. Pomyślałem, iż może znajomość języka C ułatwi mi pisanie algorytmów w C++. Nie wiem czy mam słuszność, dlatego chciałbym o to właśnie zapytać. Drugą sprawą są książki. Czy warto kupować książki, żeby nauczyć się lepiej rozwiązywać te zadania? (Jeżeli masz sprawdzoną książkę i polecasz, to proszę napisz swoje propozycje), jeżeli nie, jak więc uczyć się "pisać lepiej" problemy Spoja? Niektórzy powiedzą, no cóż trzeba pisać pisać i pisać. Okej, po części się zgadzam lecz nie lepiej jest obrać pewną taktykę i zamiast pisać kod "na ślepo" wymyślając własne rozwiązania pouczyć się czegoś co nam pomoże w tym pisaniu? No właśnie z tym mam pewien problem. Jak efektywnie uczyć się algorytmiki, aby zwiększyć wydajność kodu do zadań Spoja? Myślałem też nad wyborem innego języka typu python. Oferuje on wiele przydatnych narzędzi lecz jest on o wiele wolniejszy od C++, a właśnie na tym serwisie czas wykonania jest bardzo ważny. Co więc powinienem zrobić w takiej sytuacji?

3 odpowiedzi

+2 głosów
odpowiedź 24 grudnia 2019 przez mokrowski Mędrzec (158,440 p.)

Co do C, bez wątpienia pomoże Ci myśleć "bliżej maszyny". Dane z rynku jednak pokazują że kod w C jest około 2 x większy do rozwiązania tego samego zadania przy takiej samej (lub o kilka % mniejszej dla C++) objętości kodu wynikowego. No ale bez wątpienia uczy dyscypliny i doceniania tego co dostarcza C++.

A co do algorytmów.... jak chcesz zacząć z "grubej rury", nie ma sprawy... https://ksiegarnia.pwn.pl/Wprowadzenie-do-algorytmow,68706413,p.html (link pierwszy z brzegu, nie traktuj jak sugestię oferty). Ale na Twoim miejscu, zaczął bym od tej książki: https://helion.pl/ksiazki/c-biblioteka-standardowa-podrecznik-programisty-wydanie-ii-nicolai-m-josuttis,cpbsp2.htm#format/e Nie jest o algorytmach a o bibliotece standardowej ale pozwala się zapoznać co można z nią zrobić.

A później albo sam znajdziesz albo zapytasz.. o algorytmy grafowe czy .... inne...

Pamiętaj o jednym SPOJ w żadnym razie nie uczy dobrej architektury rozwiązania i pisania czystego kodu. Stąd jak rozwiążesz problem, pytaj o recenzję (najlepiej via prv.) jakości kodu. Wtedy dostaniesz informację zwrotną której serwis Ci nie udzieli. Oprócz znajomości algorytmów, liczy się także jakość pozostawianego kodu. Bywa że nawet bardziej niż sam algorytm...

Do zaznajomienia się z algorytmami, może być także i python. Tu jednak wydajność bywa traktowana po macoszemu ze względu na architekturę samego języka. Podtrzymuję jednak zdanie co do jakości kodu i SPOJ'a. Po rozwiązaniu problemu, szukaj recenzent(a/ki).

 

komentarz 28 grudnia 2019 przez niezalogowany

o co chodzi z tym

(najlepiej via prv.) ?

i taki 100 linek można puścić z Qt

komentarz 28 grudnia 2019 przez mokrowski Mędrzec (158,440 p.)
SPOJ i Qt? A co ma jedno z drugim wspólnego?

Rozwiązania SPOJ'owego lepiej nie pokazywać publicznie bo psujesz zabawę innym.
komentarz 29 grudnia 2019 przez niezalogowany
Poniosło mnie :)
+1 głos
odpowiedź 24 grudnia 2019 przez DragonCoder Nałogowiec (36,500 p.)

Pomyślałem, iż może znajomość języka C ułatwi mi pisanie algorytmów w C++.

Rozwinie sz ta mysl i skad taki pomysl, ze narzedzie jakim jest C, pomoze Ci tozwiazac lepiej ten sam problem przy pomocy narzedia C++? Algorytm moze byc szybszy i tyle. Albo zrozumiesz jak dziala dany algorytm i potrafisz go przeniesc na kod, albo zaden inny jezyk Ci w tym nie pomoze. 

Tutaj strona z algorytmami, z ich objaśnieniem i przykladowym kodem w 4 jezykach programowania chyba. Im wiecej algorytmów znasz tym lepiej. Masz kilka algorytnow sortowania, znajac tylko 1 bedziesz go ciagle uzywal, a to nie ma sensu. Czasami musisz uzyc tego, a czasami tego tylko najpierw musisz wiedziec o jego istnieniu, wiec musisz googlowac itd

https://eduinf.waw.pl/inf/alg/001_search/0076.php

Ksiazek nie znam, wiec nie polecam zadnej

komentarz 24 grudnia 2019 przez Teslum_369 Gaduła (4,190 p.)
Generalnie tak pomyślałem, bo języka C nie znam i nie wiem co oferuje, jakie narzędzia etc. Raz przydało mi się coś z C czego nie potrafiłem zapisać w C++, mianowicie chodziło o przybliżenie doubla do dwóch wartości po przecinku. Umiem to wyświetlić np przy pomocy <iomanip> ale potrzebowałem to w zmiennej bo konieczna była dalsza modyfikacja. Jest to może jeden przypadek, ale właśnie pomyślałem, że znając C takich przypadków może być więcej. Byłem ciekawy więc napisałem tutaj.
komentarz 25 grudnia 2019 przez mmarszik Mądrala (7,390 p.)

@DragonCoder,  C++ to w 99.9% kompatybilny nadzbiór języka C. Można najpierw dobrze nauczyć się języka C, a potem C++ można uczyć się na zasadzie: ten fragment kodu w C++ zostanie zamieniony na taki kod w C.

komentarz 25 grudnia 2019 przez mmarszik Mądrala (7,390 p.)

@DragonCoder,  A jeszcze jedna uwaga, czasami w C++ kod może być szybszy, C++ ma kilka mechanizmów ułatwiających pisanie szybszego kodu - których czyste C nie ma, np. szablony.

+1 głos
odpowiedź 26 grudnia 2019 przez profesorek96 Szeryf (91,420 p.)
Jak najbardziej warto kupować książki, ja ze swojej strony polecam ci następujące pozycje pod naukę algorytmów i spoj.

Biblia wszystkich algorytmów: https://ksiegarnia.pwn.pl/Wprowadzenie-do-algorytmow,68706413,p.html

Lekkie wprowadzenie w temat: https://ksiegarnia.pwn.pl/Rzecz-o-istocie-informatyki-algorytmika,68978876,p.html

https://ksiegarnia.pwn.pl/Algorytmika-praktyczna,778282344,p.html

https://ksiegarnia.pwn.pl/Przygody-Bajtazara.-25-lat-Olimpiady-Informatycznej-wybor-zadan,738456016,p.html

Jeśli chodzi o pisanie czystego kodu to tą książkę:

https://helion.pl/ksiazki/czysty-kod-podrecznik-dobrego-programisty-robert-c-martin,czykov.htm#format/d

Po za tym, myślę że najlepszym sposobem poprawy jakości swojego kodu, jest poddawanie go konstruktywnej krytyce na forum. Pisz posty z prośbą o ocenę swojego dzieła.

Podobne pytania

0 głosów
1 odpowiedź 941 wizyt
0 głosów
2 odpowiedzi 874 wizyt
+2 głosów
2 odpowiedzi 498 wizyt
pytanie zadane 27 listopada 2021 w Algorytmy przez maxkolanko1998 Gaduła (3,230 p.)

93,398 zapytań

142,390 odpowiedzi

322,576 komentarzy

62,756 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...