• 2022-11-01
    有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]) , i<k<j , if(j-i>1).m[i][j]=0; if(j-i==1).
    B: m[i][j]=max(m[i][k]+m[k][j]) , i<k<j , if(j-i>1).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]) , i<k<j , if(j-i>1).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)
  • C

    举一反三

    内容

    • 0

      若二维数组a 有m 列,则在a[i]&#91;j&#93;前的元素个数为( )。[/i] A: j ∗ m + i B: i ∗ m + j C: i ∗ m + j – 1 D: i ∗ m + j + 1

    • 1

      若二维数组a有m列,则在数组元素a[i]&#91;j&#93;前的元素个数为()[/i] A: j * m + i B: i * m + j C: i * m + j - 1 D: j * m + i - 1

    • 2

      下列程序段的时间复杂度是( )。for (i=1; i<=m1; ++i) for (j=1; j<=n2; ++j) Q[i]&#91;j&#93; = 0;for (i=1; i<=m1; ++i) for (j=1; j<=n2; ++j) for (k=1; k<=n1; ++k) Q[i]&#91;j&#93; += M[i]&#91;k&#93; * N&#91;k&#93;&#91;j&#93;;[/i][/i][/i] A: O(m1*n2) B: O(m1*n2*n1) C: O(m1+n2*n1) D: O(m1*n2+n1*n2) E: O(m1*n2+n1*n2+m1*n1)

    • 3

      下面的程序求100~499之间的所有“水仙花数”,即各位数字的立方和恰好等于该数本身的数。 #include "stdio.h" void main() { int i,j,k,m,n; for(i=1;i<5 ; i++) for(j=0; j<=9; j++) for(k=0; k<=9; k++) { m=i*100+j*10+k; n=i*i*i+j*j*j+k*k*k; if(________) printf("%d ",m); } }

    • 4

      二维数组a有m行n列,则在a[i]&#91;j&#93;之后的元素个数为[/i] A: m*n-(i * n + j + 1) B: m*n-(j * n + i) C: m*n-(i * n + j) D: m*n-(i * n + j – 1)