#include#include using namespace std; int w[1000], q[1000][1000]; int r[500][500]; int course(int i, int j) { int x, t; int k; if(r[i][j]>=0) return r[i][j]; if(i == j) return 0; if(i == j-1) { q[i][i+1] = i; r[i][j] = w[i] * w[i+1] * w[i+2]; return r[i][j]; } x = course(i, i) + course(i+1, j) + w[i] * w[i+1] * w[j+1]; q[i][j]=i; for(k = i+1; k > n && n!=0) { int flag = 1; memset(w,0,sizeof(w)); memset(q,0,sizeof(q)); memset(r,0,sizeof(r)); for(i = 1; i <= n; i++) { cin >> w[i]; if(i > 1) { if(w[i] != tmp) { flag = 0; } } cin >> tmp; } w[i] = tmp;//将矩阵的行列数量化成一列表达 for(i = 1; i<= n; i++) { for(j = 1; j <= n; j++) { r[i][j] = -1; } } if(flag) cout << course(1, n) << endl; else cout << "invalid argument" << endl; } return 0; }
使用动态规划算法就能解决,如果不知道动态规划怎么写,出门右转bilibili



