TLE x 2 求条
查看原帖
TLE x 2 求条
322792
Alea楼主2023/10/15 18:35

这是算法:

#include <iostream>
using namespace std;
const int SIZE=5e5+10;
string a,b;
bool eqv(){
    int alen=a.length(),blen=b.length();
    if(alen==blen){
        int df=0;
        for(int i=0;i<alen;i++) if(a[i]!=b[i]){
            df++;
            if(df>1) break;
        }
        if(df<=1) return true;
        else return false;
    }else if(alen==blen+1){
        if(a.substr(0,alen-1)==b||a.substr(1,alen-1)==b) return true;
        for(int i=1;i<alen-1;i++){
            if(a.substr(0,i)+a.substr(i+1)==b) return true;
        }
        return false;
    }else if(alen==blen-1){
        if(b.substr(0,blen-1)==a||b.substr(1,blen-1)==a) return true;
        for(int i=1;i<blen-1;i++){
            if(b.substr(0,i)+b.substr(i+1)==a) return true;
        }
        return false;
    }else return false;
}
int main(){
    int n,cnt=0;
    bool ok[SIZE]={};
    cin>>n>>a;
    for(int i=1;i<=n;i++){
        cin>>b;
        if(eqv()) cnt++,ok[i]=true;
    }
    cout<<cnt<<endl;
    for(int i=1;i<=n;i++) if(ok[i]) cout<<i<<" ";
    cout<<endl;
    return 0;
}
2023/10/15 18:35
加载中...