求zhu这道题,有人能帮我写写吗

img

img

代码如下:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main()
{
    char big[200000]={0};
    char want[20000]={0};
    char* pd = 0;
    int* posmin = (int*)malloc(10000*sizeof(int));
    int* pos2 = (int*)malloc(10000*sizeof(int));
    int* ttt = 0;
    int tms = 0;
    int minlen = 0,tmp = 0;
    int biglen,wantlen;
    int i,j;
    
    scanf("%s",big);
    scanf("%s",want);

    biglen = strlen(big);
    wantlen = strlen(want);
    memcpy(want+wantlen,want,wantlen);
    pd = want;
    while(true)
    {
        j = 0;
        tmp = 0;
        for(i = 0;i<wantlen;i++)
        {
            for(;j< biglen;j++)
            {
                if(big[j] == pd[i])
                {
                    pos2[i] = j;
                    tmp += j;
                    
                    j++;
                    break;
                }
            }
            if(j == biglen)
                break;
        }
        


        if(i == wantlen && (minlen == 0 || tmp < minlen) )
        {
            
            minlen = tmp;
            ttt = posmin;
            posmin = pos2;
            pos2 = ttt;
        }


        tms++;
        if(tms >= wantlen)
            break;
        else
        {
            pd++;
        }
    }

    
    for (i = 0;i<wantlen;i++)
    {
        if(i < wantlen -1)
            printf("%d ",posmin[i]+1);
        else
            printf("%d\n",posmin[i]+1);
    }

    free(posmin);
    free(pos2);
    return 0;
}


要代码?
当然 这个可能会超时 极有可能会超时

#include<bits/stdc++.h>
using namespace std;

const int N = 200000;
bool c[N];

int main(){
    string a;
    cin >> a;
    string b;
    cin >> b;
    for (int i = 0; i < a.size(); ++i) {
        for (int j = 0; j < b.size(); ++j) {
            if (a[i] == b[j] && c[j] == false) {
                c[j] = true;
                cout << i + 1 << " ";
                break;
            }
        }
    }
    return 0;
}