数据结构:若串S=‘software’,其子串的数目是(37).有推算公式吗?

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/18 02:51:19

数据结构:若串S=‘software’,其子串的数目是(37).有推算公式吗?
数据结构:若串S=‘software’,其子串的数目是(37).有推算公式吗?

数据结构:若串S=‘software’,其子串的数目是(37).有推算公式吗?
串S=""(空串),子串数目只有1种:""
同样,当S="A",子串有"A"和""两个
当S="AB",子串有 "A" "B" "AB" ""
当S="ABC"子串有 "A" "B" "C" "AB" "AC" "BC" "ABC" ""
S="ABC" 其实就是 S[]={'A','B','C','\0'}
引入排列组合中的运算符C(N,M),表示从M个元素中抽其中N个组成一起
计算:C(N,M)=M!/(N!(M-N)!),其中N!=N*(N-1)*(N-2)*...*1
设S="ABC"为3个元素(不计结束符\0),则非空子集(\0)有
C(1,3)=3 :"A" "B" "C"
C(2,3)=3 :"AB" "AC" "BC"
C(3,3)=1 :"ABC"
所以当S有1个字母时子集有 1+1(空集)=2
S有2个字母时子集有 C(1,2)+C(2,2)+1(空集)=2+1+1=4
S有3个字母时子集有 C(1,3)+C(2,3)+C(3,3)+1(空集)==3+3+1+1=8
...
S有N个字母时(N不为0)子集有
C(1,N)+C(2,N)+...+C(N,N)+1=(2的N次方-1) +1 =2的N次方,表示成2^N
检验:
当N=0时表示空串,子集当然只有空串
当N=1时子集有 2^1=2,跟上面列举法举出的数目相同,正确.
当N=2时子集有 2^2=4,正确
.