2016-10-22 1 views
0

Also habe ich geübt, DP-Probleme zu lösen und habe dieses Problem herausgefunden, ich konnte nicht verstehen warum. Wenn ich meinen Vektorenvektor mit der Größe n initialisiere, funktionieren die Operationen nicht. Unterdessen, wenn ich nur Kosten als int cost [n] [n] deklariere, tut es das. Bitte erzähle mir warum.Vektor der Vektoren Initialisierung funktioniert nicht, aber eine Matrix-Array tut, warum?

int sum (vector<int> freq, int i, int j){ 

    int s=0; 
    for (int x=i; x<=j; x++) { 
    s+=freq[x]; 
    } 

return s; 
} 

int optimalSearchTree(vector<int> keys, vector<int> freq){ 


    int n = keys.size(); 
    vector<vector<int>> cost(n,vector<int>(n,0)) ; 




    for (int i = 0; i < n; i++) { 
    cost[i][i] = keys[i]; 
    } 

    for (int L=2; L<=n; L++) { 

    for (int i = 0; i<= n-L+1; i++) { 

     int j = i+L-1; 
     cost[i][j] = INT_MAX; 

     for (int r=i; r<=j; r++) { 


      int c = ((r > i)? cost[i][r-1]:0) + 
        ((r < j)? cost[r+1][j]:0) + 
        sum(freq, i, j); 

      if (c < cost[i][j]) { 
       cost[i][j] = c; 
      } 

     } 
     } 
    } 

    return cost[0][n-1]; 
} 


int main(){ 

vector<int> keys = {10,12,16,21}; 
vector<int> freq = {4,2,6,3}; 

cout<<optimalSearchTree(keys, freq)<<endl; 

// int n = keys.size(); 
//vector<vector<int>> cost(n,vector<int>(n,0)) ; 

//cout<<cost.size()<<" "<<cost[0].size()<<endl; 


} 
+0

Was meinst du mit Operationen wird nicht funktionieren? –

+0

Ändern Sie Ihr Programm zu [this] (http://ideone.com/oxNoRR) und Sie werden sehen, dass Sie einen Out-of-Bounds-Zugriff haben (indem Sie die 'at()' -Funktion anstelle von '[]' verwenden, um darauf zuzugreifen Elemente) .. – PaulMcKenzie

Antwort

0

ich glaube, die Lösung die gleiche wie diese Frage folgt:

Accessing an array out of bounds gives no error, why?

Darin gibt an, dass aus gebundenem Zugriff von einem int arr [n] [n] wird nicht zurückkehren irgendein Fehler. Währenddessen wird ein Zugriff auf außer-bound-Positionen von einem Vektor aus erfolgen.

Verwandte Themen