求助!这两份代码为什么不一样
  • 板块学术版
  • 楼主SakurajiamaMai
  • 当前回复2
  • 已保存回复2
  • 发布时间2023/10/12 20:24
  • 上次更新2023/11/2 14:15:11
查看原帖
求助!这两份代码为什么不一样
784813
SakurajiamaMai楼主2023/10/12 20:24

正确代码:

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10,mod=1e9+7;
char s[N],ss[N];
int n,t,a[N],f[N],res=-1,num,ans,m,k,len;
bool vis[N];
int h[N],e[N],x,x_;
void solve()
{
    cin>>n>>m>>s>>ss;
    int j=0;
    for(int i=0;i<n;i++)
        if(s[i]==ss[j]) h[j++]=i;
    j=m-1;
    for(int i=n-1;i>=0;i--)
        if(s[i]==ss[j]) e[j--]=i;
    for(int i=1;i<m;i++) res=max(res,e[i]-h[i-1]);
    cout<<res;
}
signed main()
{
    solve();
    return 0;
}

错误代码:

#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N=1e6+10,mod=1e9+7;
char s[N],ss[N];
int n,t,a[N],f[N],res=-1,num,ans,m,k,len;
bool vis[N];
int h[N],e[N],x,x_;
void solve()
{
    cin>>n>>m>>s>>ss;
    int j=0;
    for(int i=0;i<m;i++){
        while(j<n&&s[j]!=ss[i]) j++;
        h[i]=j;
    }
    j=n-1;
    for(int i=m-1;i>=0;i--){
        while(j>0&&s[j]!=ss[i]) j--;
        e[i]=j;
    }
    for(int i=1;i<m;i++) res=max(res,e[i]-h[i-1]);
    cout<<res;
}
signed main()
{
    solve();
    return 0;
}
2023/10/12 20:24
加载中...