本地运行出现大片英文,请帮忙看看!回复请@我

P3955 [NOIP2017 普及组] 图书管理员

u55545554 @ 2018-08-21 10:21:45

#include<iostream>
#include<cstring>
using namespace std;
struct bookes{
    string book;
}books[1001];
struct needes{
    string need;
}needs[1001];
struct shuchues{
    string shuchu;
}shuchus[1001];
int main(){
    int n,q;cin>>n>>q;
    string son_string;
    for(int i=1;i<=n;i++)shuchus[i].shuchu="-1";
    for(int i=1;i<=n;i++)cin>>books[i].book;
    for(int i=1;i<=q;i++){
        cin>>needs[i].need;
        for(int j=1;j<=n;j++){
            son_string=books[j].book.substr(books[j].book.length()-needs[i].need.length(),needs[i].need.length());
            if(son_string==needs[i].need&&son_string>shuchus[i].shuchu)shuchus[i].shuchu=son_string;
        }
    }
    for(int i=1;i<=n;i++)cout<<shuchus[i].shuchu<<endl;
}

by Smile_Cindy @ 2018-08-21 10:23:44

@u55545554

整数就可以解决的为什么要用字符串?

#include <bits/stdc++.h>
#define N (int)(1e3+7)
using namespace std;
int a[N];
int main()
{
    //freopen("test.txt","r",stdin);
    int n,q;
    scanf("%d%d",&n,&q);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a[i]);
    }
    sort(a+1,a+n+1);
    for(int i=1;i<=q;i++)
    {
        int x,y;
        scanf("%d%d",&x,&y);
        bool pd=0;
        for(int i=1;i<=n;i++)
        {
            for(int p=10;p<=1e8;p*=10)
            {
                if(a[i]%p==y)
                {
                    printf("%d\n",a[i]);
                    pd=1;
                    break;
                }
            }
            if(pd)break;
        }
        if(!pd)puts("-1");
    }
    return 0;
}

by u55545554 @ 2018-08-21 10:24:04

@Alpha 谢谢


by Prurite @ 2018-08-21 10:24:32

@u55545554 出现了什么贴上来一下 您英语不好吗,英语不好别玩OI


by Smile_Cindy @ 2018-08-21 10:27:14

@u55545554

还有你的substr干了什么?

就是第二十一行的问题


by u55545554 @ 2018-08-21 10:43:05

@星烁晶熠辉


by u55545554 @ 2018-08-21 10:43:59

@Alpha 很抱歉,请自行百度。。蒟蒻解释不清楚


by Prurite @ 2018-08-21 10:47:25

@u55545554 字符串下标越界(程序尝试访问下标为18446744073709551615的地方),被系统强行终止(RE)


by u55545554 @ 2018-08-21 10:48:17

@星烁晶熠辉 这么强。。


by u55545554 @ 2018-08-21 10:49:02

@星烁晶熠辉 还是能力不够,日后再做这道题。。


by Prurite @ 2018-08-21 10:54:25

@u55545554 这题就是一道模拟吧... 字符串也可以做, 直接利用sort配自定义cmp把原书号排序, 数据水使得我们可以从小到大地把所有书号都扫一遍, 找到第一个后缀为当前需求号的字符串输出即可.

附cmp函数:

bool cmp( string a, string b )
{
    if ( a.length( )!=b.length( ) )
        return a.length( )<b.length( );
    else
        return a<b;
}
// string类型默认的<是比较的字典序

| 下一页