关于#c语言#的问题,请各位专家解答!

高级模式匹配
描述

给定两个字符串s和t,判断s是否是t的子序列,即从t中删除若干个(包括0个)字符,将剩余的字符连接起来,即可获得s。字符串s和t长度不超过1000。

输入
第一行,字符串t,文本长度\le≤1000。

第二行,字符串s,文本长度\le≤1000。

输出
若s是t的子序列,输出1,否则输出0。


```c
#include <stdio.h>
#include <string.h>

void f(char *s1,char *s2,int l1,int l2,int t,int t0,int m)
{
    for(; *s1!='\0' && *s2!='\0'; s1++,t++)
    {
        if(l1-t<l2-t0)
        {
            m=0;
            break;
        }
        if(*s1==*s2)
        {
            if(*(s2+1)!='\0')
            {
                f(s1++,s2++,l1,l2,t++,t0++,m);
            }
            break;
        }
    }
}

int main()
{
    char a[1002],b[1002],*p1,*p2;
    int len1,len2,q=0,h=1,q0=0;
    void f(char *s1,char *s2,int l1,int l2,int t,int t0,int m);
    fgets(a,1002,stdin);
    fgets(b,1002,stdin);
    len1= strlen(a) - 1;
    if(a[len1]=='\n')a[len1]='\0';
    len2=strlen(b)-1;
    if(b[len2]=='\n')b[len2]='\0';
    p1=a;
    p2=b;
    f(p1,p2,len1,len2,q,q0,h);
    printf("%d",h);
    return 0;
}



```