我寫了下面的C++程序來實現使用動態編程實現MCM。但是下面的程序崩潰了。我的代碼有什麼問題?在C++程序崩潰中使用動態編程的矩陣鏈乘法?
#include<iostream>
#include<cstdlib>
#define SZ 10
using namespace std;
int table[SZ][SZ];
int P[] = {2,3,3,5};
int MCM(int i, int j)
{
if(i==j) return 0;
else
{
int min = INT_MAX;
for(int k=i;k<=j;k++)
{
if(table[i][k]==0)
table[i][k] = MCM(i,k);
if(table[k+1][j]==0)
table[k+1][j] = MCM(k+1,j);
int sum = table[i][k] + table[k+1][j] + P[i-1]*P[j]*P[k];
if(sum<min)
min = sum;
}
return min;
}
}
int main()
{
int size = sizeof(P)/sizeof(P[0]);
printf("Minimum number of mutiplications is %d",MCM(0,size-1));
return 0;
}
是否有任何錯誤消息顯示? – 2014-09-30 12:24:32
@BobJarvis沒有程序只是崩潰。 – 2014-09-30 12:25:14
這是學習如何使用調試器的好時機。 – 2014-09-30 12:25:20