• 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

Object Storage Arubacloud
0 głosów
461 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 (155,460 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 (155,460 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ź 600 wizyt
0 głosów
2 odpowiedzi 773 wizyt
+2 głosów
2 odpowiedzi 343 wizyt
pytanie zadane 27 listopada 2021 w Algorytmy przez maxkolanko1998 Gaduła (3,230 p.)

92,576 zapytań

141,426 odpowiedzi

319,651 komentarzy

61,961 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...