zamiana psedokodu na kod

0

Tatuś małego Pawełka jest znanym na świecie arcymistrzem szachowym i bardzo chciałby, żeby jego synek podążył jego śladami. Dlatego zaczął go już uczyć grać w szachy, mimo młodego wieku chłopca. Niestety Pawełkowi kiepsko idzie nauka, najwyraźniej nie ma do tego smykałki.

Przez pierwsze trzy dni uczył się ruchów pionka, a przez następne 8 - ruchów skoczka (po jednym dniu na każdy ruch). Aktualnie uczy się ruchów wieży, z którą radzi sobie dużo lepiej i szacuje się, że po drugim dniu opanuje w pełni jej możliwości. W każdym razie po pierwszym dniu Pawełek umie już poruszać się nią w poziomie.

Chłopiec jeszcze nie wie, jaka lekcja go czeka następnego dnia, więc jest święcie przekonany, że wieżę można przesunąć na dowolne pole w tym samym wierszu i na żadne inne. Choć Pawełek nie radzi sobie za dobrze z szachami to ma smykałkę do matematyki.

Wymyślił więc sobie własną zabawę, na podstawie nowo zdobytej wiedzy. Narysował sobie szachownicę (niekoniecznie o wymiarach 8x8, ale kwadratową) i powypisywał na jej polach różne liczby, po jednej na każdym polu. Następnie zaczął stawiać na polach wieże tak, aby suma liczb na polach zajętych przez nie była możliwie jak największa. Chłopiec może postawić dowolną liczbę wież (w razie czego pożyczy sobie z innego zestawu, których w domu ma pełno); gdy nie postawi ani jednej, przyjmuje się, że suma jest równa O. Żeby zabawa nie była zbyt prosta, trzyma się reguły, że żadne dwie wieże nie mogą stać na jednym polu ani wzajemnie siebie atakować (według jego aktualnego stanu wiedzy o szachach).

Mając daną wielkość szachownicy oraz liczby, jakie Pawełek powpisywał w pola szachownicy, podaj, jaką największą sumę może uzyskać, stawiając wieże zgodnie z podanymi regułami.

Wejście
W pierwszym wierszu znajduje się jedna liczba całkowita (), mówiąca jaka jest wysokość i szerokość szachownicy. W kolejnych wierszach opisu przedstawiona jest zawartość pól w kolejnych wierszach szachownicy. Tak więc w wierszu -tym (spośród tych ) znajduje się liczb całkowitych (z przedziału od do ), będących wartościami zapisanymi w kolejnych polach -tego wiersza szachownicy.

Wyjście
Należy wypisać jedną liczbę całkowitą - maksymalną sumę, jaką chłopiec może uzyskać.

Przykład
Dla danych wejściowych:

3
1 2 3
1 2 3
1 2 3
poprawną odpowiedzią jest:

9

Do tego zadania jest następujący pseudokod:

wcz y t a j ( n )
wynik := 0
for wi e r s z := 1 to n do
akt := 0
for kolumna := 1 to n do
wcz y t a j ( x )
akt := max( akt , x )
wynik := wynik + akt
wypisz (wynik)

do tego pseudokodu napisałem następujący kod:

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
int n, x, i, j, akt, wynik=0;
cin>>n;
for(i=1; i<n; i--)
akt=0;
cin>>x;
for(j=1; j<n; j--)
akt=max(akt,x);
wynik=wynik+akt;

cout<<wynik<<endl;

return 0;

}
ale nie działa poprawnie. proszę o informację co jest nie tak.

0

Może jednak dla:
3
1 2 3
1 2 3
1 2 3
Poprawna odpowiedź jest:
6 ?

0
_13th_Dragon napisał(a):

Może jednak dla:
3
1 2 3
1 2 3
1 2 3
Poprawna odpowiedź jest:
6 ?
Nie poprawna odpowiedź to 9.
Ustawiamy 3 wieże na polach o wartości 3 co daje 9.

A może jakiś komentarz do kodu?

0
for(i=1; i<n; i--)

To jest nieco bez sensu. Zakładając, że na początku pętli rzeczywiście i < n, to dekrementując i ten warunek będzie spełniony już zawsze (tzn. przynajmniej do czasu aż się skończy zakres inta).

0

@_13th_Dragon: Nie, jest 9, bo: "W każdym razie po pierwszym dniu Pawełek umie już poruszać się nią w poziomie".
@jacek Pawlik

A może jakiś komentarz do kodu?

Byłby, jakby się go dało czytać (format).

0
lion137 napisał(a):

@_13th_Dragon: Nie, jest 9, bo: "W każdym razie po pierwszym dniu Pawełek umie już poruszać się nią w poziomie".

Czyli wszystkie 3 wieże stoją w ostatniej kolumnie?

0
lion137 napisał(a):

@_13th_Dragon: Nie, jest 9, bo: "W każdym razie po pierwszym dniu Pawełek umie już poruszać się nią w poziomie".
@jacek Pawlik

A może jakiś komentarz do kodu?

Byłby, jakby się go dało czytać (format).

#include <iostream>
#include <cstdio>
using namespace std;

int main()
{
int n, x, i, j, akt, wynik=0;
cin>>n;
for(i=1; i<n; i--)
akt=0;
cin>>x;
for(j=1; j<n; j--)
akt=max(akt,x);
wynik=wynik+akt;
cout<<wynik<<endl;
return 0;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1