1

私が書いたコードで std::bad alloc() 例外が発生しています。SOに関する他の回答によると、動的に割り当てられたメモリを解放する必要がありますが、例外は残ります。どうすれば解決できるかについての手がかりはありますか?

エラーが出る機能をつけています。

int count(int *S, int m, int n ) { int i, j, x, y;

// We need n+1 rows as the table is consturcted in bottom up manner using 
// the base case 0 value case (n = 0)
int **table=new int*[n+1];
for(int q=0;q< n+1;q++)
  table[q] = new int[m];

// Fill the enteries for 0 value case (n = 0)
for (i=0; i<m; i++)
    table[0][i] = 1;

// Fill rest of the table enteries in bottom up manner  
for (i = 1; i < n+1; i++)
{
    for (j = 0; j < m; j++)
    {
        // Count of solutions including S[j]
        x = (i-S[j] >= 0)? table[i - S[j]][j]: 0;

        // Count of solutions excluding S[j]
        y = (j >= 1)? table[i][j-1]: 0;

        // total count
        table[i][j] = x + y;
    }
}
int answer = table[n][m-1];
delete[] table;
return answer; }

私は基本的にコイン交換の問題を解決しようとしています。n は 10^9 まで大きくすることができます。

4

1 に答える 1