解决给定的5个矩阵连乘问题:矩阵A1(3×2)、A2(2×5)、A3(5×10)、A4(10×2)和A5(2×3),设m[i][j]表示Ai...Aj的最优计算次序对应的乘法计算次数(最优值),P为存储矩阵行列的数组,其中P[i]是第i个矩阵的列、第i-1个矩阵的行。求解最优值递归关系是为:[img=336x56]17e0b1726a92862.png[/img],根据该递归关系式,求解得到下面二维表:[/i][/i]
A: 132
B: 130
C: 264
D: 150
A: 132
B: 130
C: 264
D: 150
举一反三
- 有关矩阵连乘问题说法正确的是() A: 矩阵Ai...Aj连乘,其中Ak的行列为(pk×qk),k=i,i+1,...,j,其结果矩阵的行列为(pi×qj)。 B: n个矩阵连乘A1...An,其子问题为Ai...Aj连乘,1≤i≤j≤n,其中i=j表示规模为1的子问题,其需要的乘法次数为0。 C: 设矩阵Ai...Aj连乘最少的乘法次数为c[i][j],矩阵Ai...Aj连乘的子问题为矩阵Ai...Ak连乘和矩阵Ak+1...Aj连乘,则最优值的递归关系式表示为c[i][j]=c[i][k]+c[k+1][j]+piqjqk D: 矩阵连乘问题的时间复杂度为O(n2)
- int n=5; //5个矩阵连乘int p[]={10,5,4,2,2,4}; //第1个矩阵10*5, 第5个矩阵2*4最优值数组中,m[2][4]的值为() A: 56 B: 60 C: 48 D: 40
- 下列代码段执行后的结果是()int[] a = { 1, 3, 5, 2, 4 };int j = 4;for (int i = 0; i <; 5; i++) { a[i] = a[j]; j--;}for (int i = 0; i <; 5; i++) System.out.print(a[i] + " ");[/i][/i] A: 1 2 3 4 5 B: 5 4 3 2 1 C: 4 2 5 2 4 D: 4 2 5 3 1
- 输出以下4*5的矩阵。 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 #include int main() { int i,j,n=0; for(i=1;i<=4;i++) for(j=1; (1) ; j++, (2) ) { if( (3) ) printf(" "); printf("%d ",i*j); } printf(" "); return 0; }
- 写出以下程序运行结果。 #include<iomanip.h> const int N=3; int main() { int a[N][N]={{7,-5,3},{2,8,-6},{1,-4,-2}}; int b[N][N]={{3,6,-9},{2,-8,3},{5,-2,-7}}; int i,j,c[N][N]; for(j=0;j<N;i++) //计算矩阵C for(j=0;j<N;j++) c[i][j]=a[i][j]+b[i][j]; for(j=0;j<N;i++) //输出矩阵C { for(j=0;j<N;j++) cout<<setw(5)<<c[i][j]; cout<<endl; } }[/i][/i][/i][/i]