设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()。A.求子串B.联接C.匹配D.求
设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()。
A.求子串
B.联接
C.匹配
D.求串长
设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()。
A.求子串
B.联接
C.匹配
D.求串长
A.连接
B.模式匹配
C.求子串
D.求串长
给定两个长度分别为n和m的序列x[0...n-1|]和y[0...m-1],以及一个长度为p的约束字符串s[0...p-1].带有子串排斥约束的最长公共子序列问题就是要找出x和y的不包含s为其子串的最长公共子序列.例如,如果给定的序列x和y分别为AATGCCTAGGC和CGATCTGGAC.字符串s=TG时,子序列ATCTGGC是x和y的一个无约束的最长公共子序列,而不包含s为其子串的最长公共子序列是ATCGGC.
算法设计:设计一个算法,找出给定序列x和y的不包含s为其子串的最长公共子序列.
数据输入:由文件input.txt提供输入数据.文件的第1行中给出正整数,分别表示给定序列x和y及约束字符串s的长度.接下来的3行分别给出序列x、y和约束字符串s.
结果输出:将计算出的x和y的不包含s为其子串的最长公共子序列的长度输出到文件output.txt中.
列的字符集是Σ={A,C,G,T}.其中字符分别代表组成DNA的4种核苷酸:腺嘌呤、胞嘧啶、鸟嘌呤、胸腺嘧啶.许多疾病往往是由基因突变引起的.这种基因突变是从一个正常的基因序列通过几代人的遗传而产生的.对于基因片段的分析有助于了解基因突变导致的遗传疾病.例如,如果一个基因序列中含有基因片段ATG,则可能含有某种遗传疾病.生物科学家们已经发现许多这类基因片段.对于已知的不安全的基因片段集合P,如果一个基因序列中含有P中基因片段,则称该基因序列为不安全的基因序列,否则称该基因序列为安全的基因序列.
算法设计:对于给定的不安全的基因片段集合P和一个正整数n,计算长度为n的安全的基因序列个数.
数据输入:由文件input.txt提供输入数据.文件的第1行有两个正整数n(1≤n≤2x109)和m(0≤m≤10).n是基因序列长度,m是不安全的基因片段个数.接下来的m行中,每行是一个长度不超过10的不安全的基因片段.每个文件可能有多个测试数据.
结果输出:将计算出的长度为n的安全的基因序列个数mod100000,输出到文件output.txt中.
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
include <stdio. h>
define N 20
int fun(iht n, int *a)
/*************found*************/
{ int i, j, k, sum;
sum=0;
for(k=3, i=0;i<n; i++, k+=5)
{ sum=sum+ k;
/************found***************/
if (sum%4=2)
a [j++] =sum;
}
/*************found**************/
return j;
}
main ( )
{ int a[N],d, n, i;
printf("\nEnter n(4<=n<=50): ");
scanf("%d", &n);
d=fun(n, a);
printf("\n\n The result :\n ");
for(i=0;i<d; i++) printf("%6d ",a[i]);
printf("\n\n ");
}
A.一对多关系
B.多对多关系
C.多对一关系
D.一对一关系
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
include <stdio.h>
define N 16
typedef struct
{char num[10];
int s;
}STREC;
int fun (STREC *a,STREC *b)
{
}
main ()
{
STREC s[N]={{“GA005”,82},{“GA003”,75},
{“GA002”,85},{“GA004”,78},{“GA001”,95},
{“GA007”,62},{“GA008”,60},{“GA006”,85},
{“GA015”,83},{“GA013”,94},{“GA012”,78},
{“GA014”,97},{“GA011”,60},{“GA017”,65},
{“GA018”,60},{“GA016”,74}};
STREC h[N];
int i,n;
FILE *out;
n=fun(S,h);
printf(“The %d lowest score:\n”,n);
for (i=0; i<n; i++)
printf(“%s %4d\n”,h[i].mum,h[i].s);
/*输出最低分学生的学号和成绩*/
printf(“\n”);
out=fopen("outl9.dat",“w”);
fprintf(out,“%d\n”,n);
for(i=0; i<n; i++);
fprintf(out, “%4d\n”,h[i].s);
fclose(out);
}
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构.
试题程序:
include <conio.h>
include <string.h>
include <stdio.h>
include <alloc.h>
define N 10
typedef struct ss
{char num[10];
int s;
} STU;
STU *fun{STU a[], int m)
{ STU b[N] ,*t;
int i, j,k;
/*************found**************/
*t=calloc (m, slzeof (STU));
for(i=0;i<N;i++) b[i]=a[i];
for(k=0; k<m; k++)
{ for (i=j=0;i<N;i++)
if (b[i].s>b[j].s) j=i;
/*************found**************/
t[k].num=b [j].num;
t[k].s=b[j] s;
b[j].s=0;
}
return t;
}
outresult(STU a[],FILE *pf)
{ int i;
for (i=0; i<N; i++)
fprintf(pf, "No=%s Mark-%d\n ",
a [i] .num, a[i].s);
fprintf(pf, "\n\n ");
}
main ( )
{ STU a[N]={{ "A01 ",81},{ "A02 ",89},
{ "A03 ",66},{ "A04 ",87},{ "A05 ",77},
{ "A06 ",90},{ "A07 ",79},{ "A08 ",61},
{ "A09 ",80},{ "Al0 ",71}};
STU *pOrder;
int i, m;
clrscr ();
printf ("*****THE RESULT***** \n");
outresult (a, stdout);
printf ("\nGive the number of the students
who have better score: ");
scanf ("%d", &m);
while (m>10)
{ printf("lnGive the number of the
students who have better score: ");
scanf ("%d", %m);
pOrder=fun (a,m);
printf("***** THE RESULT*****kn");
printf("The top :\n");
for (i=0; i<m; i++)
printf("%s %d\n",pOrder[i].num,
p0rder [i]. s);
free (pOrder);
}
为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!