Salve a tutti.
Il problema è semplice: dobbiamo attraversare un castello 5x5 stanze, ed ogni stanza ha un certo costo di attraversamento. Si parte sempre da quella più sud. La versione è semplice e di prestazioni scarse, senza quindi utilizzare programmazione dinamica e altri artefici.
Codice:
Eppure il risultato è sempre sbagliato... Qualcuno mi sa dire perchè? Il codice è esattamente quello trovato su Wikipedia, alla seguente paginacodice:#include <iostream> using namespace std; #define INF 1000000 int n=5; int castle[5][5]={{6,7,4,7,8},{7,6,1,1,4},{3,5,7,8,2},{2,6,7,0,2},{7,3,5,6,1}}; int min(int n1, int n2, int n3) { int tmin=n1; if (tmin > n2) tmin = n2; if (tmin > n3) tmin = n3; return tmin; } int minCost(int x, int y) { if (x < 0 || x >= n) return INF; else if (y == 0) return castle[x][y]; else return min(minCost(x-1, y-1), minCost(x, y-1), minCost(x+1, y-1)) + castle[x][y]; } int main() { int x, y=4; cout << "x da cui partire (0-4): "; cin >> x; cout << minCost(x,y); system("PAUSE"); }
http://it.wikipedia.org/wiki/Programmazione_dinamica
e non è nulla di trascendentale... dove sbaglio?

Rispondi quotando
