Zgłaszanie | Wszystkie zgłoszenia | Najlepsze | Lista |
AL_05_07 - Linia brzegowa |
W tym zadaniu otrzymasz kilka zeskanowanych map w postaci matrycy, o rozmiarze N na M, znaków '.' i 'X'. Każdy znak reprezentuje kwadrat o boku 1 km, który jest albo wodą '.' albo lądem 'X'.
Twoim zadaniem jest obliczenie całkowitej długości morskiej linii brzegowej wszystkich lądów i wysp przedstawionych na mapie. Morzem jest każda woda, przedstawiona na mapie, która łączy się z dowolnym brzegiem mapy. Brzeg lądu przylegający do krawędzi mapy jest traktowany jako morska linia brzegowa tego lądu. Brzegi jezior i brzegi wysp na jeziorach są pomijane i nie są doliczane do całkowitej sumy.
Wejście
Najpierw liczba map T ≤ 10.
Potem opisy poszczególnych map w następującym formacie:
W pierwszej linii dwie liczby całkowite N i M (1 ≤ N,M ≤ 5000) oznaczające wymiary mapy.
W kolejnych N liniach ciągi znaków 'X' lub '.', każdy o długości M.
Wyjście
Dla każdej mapy, jedna liczba będąca całkowitą sumaryczną długością (w km) morskiej linii brzegowej wszystkich lądów i wysp na mapie. Każda suma w oddzielnej linii.
Przykład
Wejście: 2 5 6 .XXXX. .X.XX. XXX... ....X. ...... 3 3 .X. X.X .X. Wyjście: 20 12
Dodane przez: | narbej |
Data dodania: | 2013-04-03 |
Limit czasu wykonania programu: | 1s-3s |
Limit długości kodu źródłowego | 50000B |
Limit pamięci: | 1536MB |
Cluster: | Cube (Intel G860) |
Języki programowania: | All except: ASM64 GOSU |
Pochodzenie: | ALGOLIGA |
ukryj komentarze
|
||||||
2013-04-07 12:56:48 narbej
Podpowiedź => forum - FAQ Ostatnio edytowany: 2013-04-07 16:16:54 |
||||||
2013-04-07 10:17:27 Filip £ubniewski
dzięki wielkie za pomoc |
||||||
2013-04-07 10:15:41 narbej
Proponuję, z tym pytaniem zwrócić się kiedyś na forum spoja, teraz leć do następnych zadań i tak straciłeś dużo czasu [też moja wina]. |
||||||
2013-04-07 10:12:01 Filip £ubniewski
no faktycznie:) ale czemu właściwie tak jest? mniej razy ją deklaruje, potem tylko nadpisuje jej wartości w pętl, tutaj jest haczyk? ps tak, fajnie widać tutaj sporą różnicę w czasie Ostatnio edytowany: 2013-04-07 10:14:24 |
||||||
2013-04-07 10:11:35 narbej
No i synchro ios nie jest złe. |
||||||
2013-04-07 10:10:06 narbej
A nie mówiłem? "wYCIĄGNĄŁEM" ją wyżej ;-) |
||||||
2013-04-07 10:01:31 narbej
Jak zauważysz na liście zgłoszeń, zaliczyłem twoim kodem zadanie. Tablicę masz deklarowaną, tak jak masz, czy to jest prawidłowe, nie mam pojęcia, kiedyś już ktoś pytał o to na forum. Ja "wyciągnąłem" tablicę wyżej więc zadeklarowałem ją jako globalną [5000+10][5000+10]. Oczywiście od razu program na pierwszym teście dostał SIGSEGV. Ale po zmianie int na short int już było AC. Tak naprawdę, wystarczyła by może tablica bool, albo char, w zależności co tam robisz i jak ją wykorzystujesz. Ostatnio edytowany: 2013-04-07 10:03:57 |
||||||
2013-04-07 09:51:08 Filip £ubniewski
Może to wina kolejki? Ja sobie te współrzędne wrzucam do niej i potem ją na bieżąco opróżniam Ostatnio edytowany: 2013-04-07 09:51:23 |
||||||
2013-04-07 09:33:53 narbej
Przedostatnie zgłoszenie, trzy pierwsze ok, a wysypało się na czwartym teście [SIGSEGV] - za mała tablica? |
||||||
2013-04-07 09:28:39 narbej
Twój ostatnio zgłoszony program na test z zadanie odpowiada dwa razy 22 |