自己写了一个程序但总是有问题,麻烦大家帮我找找错

题目:输入两个字符串s和t,判断是否可以从t中删除0个或多个字符(其他字符顺序不变),得到字符串s。例如,abcde可以得到bce,但无法得到dc。
以下是我的代码:

#include<stdlib.h>
#include<string.h>
#define maxn 11000
char s[maxn], t[maxn];
int p[maxn];
int main()
{
    int lens, lent;
    scanf_s("%s", s, maxn);
    scanf_s("%s", t, maxn);
    lens = strlen(s);
    lent = strlen(t);
    int flag = 1, flag1 = 0, flag2 = 0;/*我的基本思路就是分以下三种情况考虑*/
    if (lens > lent)printf("can not");
    if (lens == lent)
    {
        for (int i = 0;i < lens;i++)
        {
            if (s[i] != t[i]) { flag = 0; break; }
            else flag = 1;
        }
        if (flag)printf("can");
        else printf("can not");
    }
    if (lens < lent)
    {
        for (int i = 0;i < lens;i++)
        {
            for (int k = 0;k < lent;k++)
            {
                if (s[i] == t[k])
                {
                    flag1 = 1;
                    break;
                }
                else flag1 = 0;
            }
            if (!flag1)
            {
                printf("can not");
                system("pause");
                return 0;
            }
        }
        if (flag1)/*如果s中的字符都能在t中找到,重字符按重数算*/
        {
            int j = 0;
            for (int x = 0;x < lens;x++)
            {
                for (int y = 0;y < lent;y++)
                {
                    if (s[x] == t[y])
                    {
                        p[j] = y;
                        break;
                    }
                }
                j++;
            }
            for (j = 0;p[j];j++)
            {
                if (p[j] < p[j + 1])/*如果符合那么数组p中的数就应该从小到大排列*/
                    flag2 = 1;
                else
                {
                    flag2 = 0;break;
                }
            }
            if (flag2)printf("can ");
            else printf("can not");
        }
    }
    system("pause");
    return 0;
}

    for (int i = 0;i < lens;i++)
    {
        for (int k = 0;k < lent;k++)

                ^   ^这里k不赋初值

int k=0;放到for (i 之前

一次过 后面的代码不需要了