Mam taki sobie trójkąt liczbowy podobny do tego:
1
2 3
4 5 6
7 8 9 10
I mam znaleźć największą sumę jaka powstanie poprzez przechodzenie w dół w lewo lub prawo. Np: 1->3->6->10 i tu wyjdzie największa liczba '20'. Nie można iść w taki sposób 1->3->4->10. Mój problem jest taki, że mój trójkąt ma 200 poziomów i są w nim rozmieszczone (losowo) liczby od 0 do 99. Program, który sprawdza wszystkie możliwości będzie robił 2^200 obliczeń. Zajmie to miliony lat. Ulepszyłem, więc lekko ten program aby na każdym szczeblu sprawdzał czy ma szansę mieć większą liczbę niż dotychczasowe maximum. Jeśli nie to omija tą możliwość.
Dam kod mojego programu. (Jest troszę duży więc dam tylko linka http://niteria.webpark.pl/main.cpp) Tylko proszę się nie śmiać, bo kodzik trochę lamerski. W tablicy a[200][200] mam ten trójkąt jako podobną do tego tablicę:
1 0 0 0
2 3 0 0
4 5 6 0
7 8 9 10
Jeśli ktoś ma jakiś pomysł jak zmienić ten kod aby działał szybciej lub ma pomysł na lepszy algorytm do zrobienia tego to proszę o pomoc.
Acha sam[200] to kolejne sumy na kolejnych szczeblach.
Z góry dzięki!