mając taką macierz NxN gdzie N = 5
5
2 3 4 2 5
5 2 1 2 2
2 4 2 2 3
1 2 2 4 3
3 2 1 2 3
muszę z lewego dolnego rogu dojść do prawego górnego rogu normalnie bym to zrobił
for(int i = 0; i < N; i++)
{
cout << i << " " << N-1-i << '\n';
}
i droga by wyglądała
3 2 2 2 5
ale ze jest to algorytm zachłanny muszę poruszać się drogą po mniejszych wartościach np.
3 1 2 4 2 1 2 2 5
mając taki przepis proszę o pomoc w napisanu go w c++
- ustawiasz start na [N - 1][0] => lewy, dolny róg.
- sprawdzasz, który z kierunków zawiera miejszą wartość - czy w górę, czyli [N - 1 - 1][0], czy w prawo, czyli [N -1][1]
2a) może nastąpić przypadek, że po drodze dojdziesz do wiersza 0, albo kolumny N - 1. Od takiego momentu możliwy jest tylko ruch w prawo (dla wiersza 0), albo w górę (dla ostatniej kolumny), musisz to uwzględnić w algorytmie. - przestawiasz start na znaleziony w punkcie 2 indeks, i powtarzasz krok 2 póki nie dojdzie do [0][N - 1] => prawy, górny róg