#include <stdio.h>
#include <string.h>//添加字符串头文件
int Subsequence(char s[], char t[])
{
int m,n,i,j;
n = strlen(s); //n表示序列S的长度
m = strlen(t); //m表示序列T的长度
i=0;
j=0;
if (m>n)
return 0; //T不是S的子序列
while ((i<m)&&(j<n))
{
if(t[i]==s[j])
//序列T中第i个元素与序列S中第j个元素相等
i=i+1;
j=j+1;
}
if (strstr(s,t)!=NULL)
return 1; //T是S的子序列
return 0;
}
int main()
{
int Subsequence(char s[], char t[]);
char s[30],t[30];
int n,m;
printf("**************************************************\n");
printf(" 子 序 列 判 定 算 法\n");
printf("**************************************************\n\n");
printf("您要在多少组序列中进行判定,请输入(1~100):");
scanf("%d",&n);
printf("\n");
m=1;
while(n--)
{
printf("请输入第%d组待匹配序列S:",m);
scanf("%s",s);
printf("请输入第%d组待匹配序列T:",m);
scanf("%s",t);
if(Subsequence(s,t))
printf("序列T(%s)是序列S(%s)的子序列。\n\n",t,s);
else
printf("序列T(%s)不是序列S(%s)的子序列。\n\n",t,s);
m++;
}
}