下列算法实现求采用顺序结构存储的串s和串t的一个最长公共子串。void maxcomstr(orderstring *s,*t, int index, length){int i,j,k,length1,con; index=0;length=0;i=1; while (i[=s.len) {j=1;while(j<=t.len){ if (s[i]==t[j]) { k=1;length1=1;con=1; while(con) if (1) _ { length1=length1+1;k=k+1; } else (2) __; if (length1]length) { index=i; length=length1; } (3)____; } else (4) ___; } (5) __} }[/i]
(1)i+k<=s.len && j+k<=t.len && s[i+k]==t[j+k] ∥如果在s和t的长度内,对应字符相等,则指针k 后移(加1) (2)con=0 ∥s和t对应字符不等时置标记退出 (3)j=j+k ∥在t串中,从第j+k字符再与s[i]比较 (4)j=j+1 ∥t串取下一字符 (5) i=i+1 ∥s串指针i后移(加1)。[/i]
举一反三
- 下列算法实现求采用顺序结构存储的串s和串t的一个最长公共子串。 void maxcomstr(orderstring *s,*t; int index, length) {int i,j,k,length1,con; index=0;length=0;i=1; while (i
- 阅读下列算法,并回答问题: void fun(SeqList *L, DataType x) {int i=0,j; while (i[L-]length && x>L->data[i])i++; if(i[L-]length && x==L->data[i]) {for(j=i+1;j[L-]length;j++) L->data[j-1]=L->data[j]; L->length--;} else {for(j=L->length;j>i;j--) L->data[j]=L->data[j-1]; L->data[i]=x; L->length++; } } (1)设顺序表L=(3,7,11,14,20,51), 写出执行fun(&L,15)之后的L=(_____________) (2)设顺序表L=(4,7,10,14,20,51),写出执行fun(&L,10)之后的L= (_____________)[/i][/i][/i]
- 删除 Status ListDelete(SqList *L,int i) { int j; if((i<1)||(i>L->length)) return ERROR; for(j=i;j<=L->length-1;j++) ___________________; _________________; return OK; }
- 分析以下算法的时间复杂度。void fun(int n){ int i,j,k; for (i=1;i<= n;i++) for (j= 1;<= n;j++) . { k=1; while (k<=n) k=5*k;}
- 设有定义: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
内容
- 0
下列程序: Option Base 1 Private Sub Form_Click() Dim a(5,5) For i = 1 To 5 For j = 1 To 5 k = k + 1 a (i,j)= k Next j Next i For i = 1 To 5 s = s + a (i,i) Next i Print s End Sub 运行时的输出结果是( )。
- 1
下面程序的时间复杂为() for(i=1,s=0; i<=n; i++) {t=1;for(j=1;j<=i;j++) t=t*j;s=s+t;}
- 2
如果length=3,则以下代码:<;view wx:if="{{length >; 5}}">;1<;/view>;<;view wx:elif="{{length >; 2}}">;2<;/view>;<;view wx:else>;3<;/view>;的输出结果为( ) A: 1 B: 2 C: 3 D: 4
- 3
牛顿基本插值公式,填空使程序完整。 x=1:7; y=[5 3 2 1 2 4 7]; syms p; plot(x,y,'o','linewidth',3); n=length(x); for k=1:n for j=【1】 y(j) = (y(j)-y(j-1))/【2】; end end v=0; w=1; for k=1:n v=v+【3】; w=w*(p-x(k)); end s=subs(v,'p','x') s=collect(s) ezplot(s,1,7)
- 4
下列程序中while循环体执行的循环次数是( )。 int i=1,j=0,k=1; while(i>0||j A: 1 B: 无穷次 C: 2 D: 0