有n个正整数组成的数组a,两端的数不能删除,中间每删除一个数,其得分为其本身同其两侧数的乘积,求其中间n-2个数逐个删除后的最大得分?设m[i][j] 为从a[i]到a[j]将中间数删除后的最大得分,从如下公式中选择m[i][j]的递归定义[/i][/i][/i]
A: m[i][j]=max(m[i][k]+m[k+1][j]) , i1).m[i][j]=0; if(j-i==1).
B: m[i][j]=max(m[i][k]+m[k][j]) , i1).m[i][j]=0; if(j-i==1)
C: m[i][j]=max(m[i][k]+m[k][j]+a[k-1]*a[k]*a[k+1]) , i1).m[i][j]=0; if(j-i==1)
D: m[i][j]=max(m[i][k]+m[k][j]+a[k-1]*a[k]*a[k+1]) , i<=k<=j , if(j-i>1).m[i][j]=0; if(j-i==1)
A: m[i][j]=max(m[i][k]+m[k+1][j]) , i
B: m[i][j]=max(m[i][k]+m[k][j]) , i
C: m[i][j]=max(m[i][k]+m[k][j]+a[k-1]*a[k]*a[k+1]) , i
D: m[i][j]=max(m[i][k]+m[k][j]+a[k-1]*a[k]*a[k+1]) , i<=k<=j , if(j-i>1).m[i][j]=0; if(j-i==1)
举一反三
- 下列程序段的时间复杂度为( )。 for(i=0;i<m; i++) for(j=0; j<t; j++) c[i][j]=0; for(i=0;i<m; i++) for(j=0;j<t; j++) for(k=0;k<n; k++) c[i][j]=c[i][j]+a[i][k]*b[k][j];
- 【单选题】以下算法的时间复杂度() void matrimult(int a[M][N],int b[N][L],int c[M][L]) // { int i,j,k; for(i=0;i<M;i++) for(j=0;j<L;j++) c[i][j]=0; for(i=0;i<M;i++) for(j=0;j<L;j++) for(k=0;k<N;k++) c[i][j]+=a[i][k]*b[k][j]; } A. O(n*l) B. O(m*l) C. O(m*n) D. O(m*n*l)
- 设有定义:int i=0,j=0,k=0; 则执行语句++i||++j&&++k;后i,j,k的值为() A: i=1;j=1;k=1 B: i=1;j=0;k=1 C: i=1;j=0;k=0 D: i=0;j=0;k=0
- 中国大学MOOC: 有如下程序段: Dim i%, j%, n%, m%, k% m = 0 : k = 0 For i = 1 To 5 k = k + 1 n = 0 For j = 1 To 2 n = n + 1 m = m + 1 Next j Next i MsgBox(k & & n & & m)运行该程序代码段后,消息对话框中显示的内容为( )。
- 若二维数组a 有m 列,则在a[i][j]前的元素个数为( )。[/i] A: j ∗ m + i B: i ∗ m + j C: i ∗ m + j – 1 D: i ∗ m + j + 1