问题标题: 酷町堂:3073 图书管理员

0
0
已解决
曹博扬
曹博扬
初级天翼
初级天翼
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<string>
#include<iomanip>
using namespace std;
int n,q,t;
string s[10010],a[10010];
bool cmp(string a,string b){
    return (a+b)<(b+a);
}
int main(){
    cin>>n>>q;
    for(int i=1;i<=n;i++)
        cin>>s[i];
    sort(s+1,s+n+1,cmp);
    for(int i=1;i<=q;i++){
        cin>>t>>a[i];
        int m=0;
        for(int j=1;j<=n;j++){
            int x=s[j].size()-t;
            int f=s[j].find(a[i],x);
            if(f!=-1){
                cout<<s[j]<<endl;
                m=1;
                break;
            }
        }
        if(m==0)
            cout<<-1<<endl;
    }
    return 0;
}

求找错!!!


0
已采纳
朱优扬
朱优扬
中级天翼
中级天翼

cmp函数改为:

    if(x.size()!=y.size())	return x.size()<y.size();
	return x<y;

嘿嘿(我也问老师了……)

朱优扬在2021-04-15 20:30:40追加了内容

这样避免7和35这样的数据

0
汪宇航
汪宇航
新手启示者
新手启示者

你没事干乱做啊???

f==-1呢???

0
汪宇航
汪宇航
新手启示者
新手启示者

可以使用字符串模拟或者暴力搜索(暴力搜索可能会超时)

我要回答