@P2Oileen
2017-08-07T05:05:18.000000Z
字数 1872
阅读 1534
标★的题目为选做题,仅供学有余力的同学尝试,并且评分标准也更严格。请先做完不标★的题目,再尝试做标一个★的题目,再尝试做更多★的题目。
本次作业总分:32+1.6
scanf
函数返回值的意义是?读入的变量的数量printf
函数返回值的意义是?输出了多少个变量sscanf
函数返回值的意义是?有多少个变量被赋值了sprintf
函数返回值的意义是?有多少个变量被输出到Stlstrcmp
函数返回值的意义是?第二个字符串ascii-第一个字符串asciistrncmp
函数返回值的意义是?长度为n的两个字符串后-前strstr
函数返回值的意义是?第二个串在第一个串中出现的位置的地址strcpy
函数返回值的意义是?第一个串的地址strncpy
函数返回值的意义是?同上,只不过是长度为n的设字符集为小写字母,某个字母对应的整数是其顺序编号加上。例如a
对应,b
对应,c
对应……
设哈希函数为多项式哈希,乘数为,模数为。例如acc
对应。
a aaaaaaa
有个数,每个数等概率取为范围内的整数。对于以下的取值,估算这个数中存在重复数的概率,只需要选取以下选项中的一个:
A. 几乎不可能(概率小于)
B. 极小可能(概率至少为,但小于)
C. 较小可能(概率至少为,但小于10%)
D. 可能(概率至少为10%,至多为90%)
E. 较大可能(概率大于90%,但不超过)
F. 极大可能(概率大于,但不超过)
G. 几乎必然(概率大于)
★★稍微精确地计算上述概率。计算结果保留5位有效数字。
假设要对模式串s
进行KMP算法的预处理得到next
。
设s
的长度为n
,且字符存放于s[1]
到s[n]
的位置。设next[i]
表示:小于i
的最大的非负整数j
,使得s
的长度为j
的前缀等于s
的长度为i
的前缀的长度为j
的后缀的(如果不存在这样的正整数j
,则next[i]
为0,因为空串和空串总是相等的)。
下面是一个试图完成这项工作的程序:
char s[MAXN];
int n;
// 假定s和n已经被处理好了
int next[MAXN];
memset(next, 0, sizeof(next));
for(int i = 1; i <= n; i++)
{
int j = next[i - 1];
while(j && s[j + 1] != s[i])
j = next[j];
if(s[j + 1] == s[i])
next[i] = j + 1;
else
next[i] = j;
}
next
数组的程序的时间复杂度为。next
数组后,对于某个长度为的待匹配串,KMP算法进行匹配的时间复杂度为(注意,不要只说明,要说明)。举出两个例子,使得不一定使用哈希或KMP等高级算法,只需用暴力算法就能完成字符串匹配。
给定下列字符串:
abacaba
ababa
aba
aca
bab
bac
acaca
cab
Written with StackEdit.