- 牛牛闯关
- 2024-01-02 17:31:11 @
#include<bits/stdc++.h>
using namespace std;
int n,q,k;
string cmp(string a,string b)
{
if(a.size()<b.size())return true;
if(a.size()>b.size())return false;
for(int i=0;i<a.size();i++)
if(a[i]>b[i])return true;
else if(a[i]>b[i])return false;
return true;
}
int main()
{
cin>>n>q;
for(int i=1;i<=n;i++)
cin>>s[i];
sort(s+1,s+1+n,cmp);
for(int i=1;i<=q;i++)
{
cin>>k>>str;
int ok=1;
for(int j=1;j<=n;j++)
{
int si=s[j].size()-k;
if(si<0)continue;
if(s[j].substr(si,k)==str)
{
ok=0;
cout<<s[j]<<endl;
break;
}
}
if(ok)cout<<"-1"<<endl;
}
return 0;
}
问题出哪了???????????
1 条评论
-
240803gj徐嘉昊 (2212224徐嘉昊) LV 10 @ 2024-01-24 20:59:43
额,这题其实你用数组就可以了,不需要字符串那么烦,还容易出错。只要把数字每一位拆分进行比较就行了。你要不参考一下我的代码,通俗易懂。
#include<bits/stdc++.h> using namespace std; int n,q,len,x,a[10005]; signed main() { ios::sync_with_stdio(false); cin>>n>>q; for(int i=1;i<=n;i++) cin>>a[i]; sort(a+1,a+n+1); for(int i=1;i<=q;i++) { cin>>len>>x;bool ok=1;int choose=0; for(int j=1;j<=n;j++) { int check=a[j],xt=x;ok=1; while(xt) { if(xt%10!=check%10){ok=0;break;} xt/=10,check/=10; } if(ok){choose=j;break;} } if(!ok)cout<<-1<<endl; else cout<<a[choose]<<endl; } return 0; }
- 1
信息
- ID
- 1988
- 难度
- 8
- 分类
- (无)
- 标签
- 递交数
- 13
- 已通过
- 6
- 通过率
- 46%
- 被复制
- 3
- 上传者