大佬们帮忙康康这题我哪错了好不好~
题目:
链接:https://ac.nowcoder.com/acm/contest/8844/M
来源:牛客网
来源:牛客网
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld
题目描述
在一个超市里有一个货物架,上面有n\mathit nn个格子,编号1,2,...,n\text 1,2,...,n1,2,...,n。
超市里共出售26\text 2626种商品,分别用小写字母a,b,...,z\mathit a,b,...,za,b,...,z表示。
当一个顾客前来购买商品的时候,他会从第一个格子查找到第n\mathit nn个格子,如果他在中间某一个格子处找到了自己想要的商品就会将他拿下来并购买它,然后立刻离开超市;如果他在中间某一个格子处发现这个格子里没有商品,他就会立刻停下来并离开超市;如果他走到最后也没有发现自己想要的商品也会离开超市。
货物架初始第i\mathit ii个格子里的商品为sis_{i}si。
现在有m\mathit mm个人将按照顺序进入超市,第i\mathit ii个人想要的商品为cic_{i}ci。
作为超市的管理员,你想要尽可能多的出售商品。你可以在这些人到来前任意调整商品位置,但是一旦第一个人进入超市你就不能再调整了。那么你最多可以卖出多少商品呢?
输入描述:
第一行两个空格分隔的正整数n,m\mathit n,mn,m。 第二行一个长度为n\mathit nn只包含小写字母的字符串s\text ss。第三行一个长度为m\mathit mm只包含小写字母的字符串c\text cc。含义均如题面所述。1≤n,m≤10001\leq n,m \leq 10001≤n,m≤1000
输出描述:
一行一个正整数代表答案。
代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n,m,sum=0,ans=0;
string a,b,c;
cin>>n>>m>>a>>b;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a[i]==b[j]) {
b[j]='?'+sum*j+2;
a[i]=':'+sum;
sum++;
continue;
}
}
}
cout<<sum;
return 0;
}
using namespace std;
int main()
{
int n,m,sum=0,ans=0;
string a,b,c;
cin>>n>>m>>a>>b;
for(int i=0;i<n;i++){
for(int j=0;j<m;j++){
if(a[i]==b[j]) {
b[j]='?'+sum*j+2;
a[i]=':'+sum;
sum++;
continue;
}
}
}
cout<<sum;
return 0;
}
全部评论
(1) 回帖