4881283_wa.cpp
来自「部分PKU上的源码」· C++ 代码 · 共 164 行
CPP
164 行
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int n,m;
struct zs
{
string in,out;
bool used;
}qz[55],qp[55];
char in[1000];
bool match(int &count)
{
int i,j;
int temp;
for(i=0;i<n;i++)
{
temp=count;
//判断哪种;
int state;
if(in[temp]>='A'&&in[temp]<='Z')
{
if(in[temp+1]>='A'&&in[temp+1]<='Z') state=2;
else state=1;
}
else state=3;
for(j=0;j<qp[i].in.length();j++)
{
if(in[temp]==qp[i].in[j]||in[temp]==qp[i].in[j]+32||in[temp]==qp[i].in[j]-32) temp++;
else break;
}
if(j==qp[i].in.length())
{
int k;
switch(state)
{
case 1:if(qp[i].out[0]>='A'&&qp[i].out[0]<='Z') cout<<qp[i].out[0];
else cout<<char(qp[i].out[0]-32);
for(k=1;k<qp[i].out.length();k++)
{
char x=qp[i].out[k];
if(x>='A'&&x<='Z') cout<<char(x-32);
else cout<<x;
}break;
case 2:
for(k=0;k<qp[i].out.length();k++)
{
char x=qp[i].out[k];
if(x>='a'&&x<='z') cout<<char(x-'a'+'A');
else cout<<x;
}break;
case 3:
for(k=0;k<qp[i].out.length();k++)
{
char x=qp[i].out[k];
if(x>='A'&&x<='Z') cout<<x-'A'+'a';
else cout<<x;
}break;
}
count+=qp[i].in.length();
return true;
}
}
for(i=0;i<m;i++)
{
temp=count;
for(j=0;j<qz[i].in.length();j++)
{
if(in[temp]!=qz[i].in[j])
{
break;
}
else temp++;
}
if(j==qz[i].in.length())
{
if(qz[i].used==false)
{
cout<<qz[i].out<<" ("<<qz[i].in<<")";
qz[i].used=true;
}
else cout<<qz[i].in;
count+=qz[i].in.length();
return true;
}
}
return false;
}
int main()
{
cin>>n>>m;
int i,j;
for(i=0;i<n;i++)
{
getchar();
scanf("%[^\n]",in);
j=0;
while(in[j]!='\"') j++;
j++;
while(in[j]!='\"')
{
qp[i].in+=in[j];
j++;
}
j++;
while(in[j]!='\"') j++;
j++;
while(in[j]!='\"')
{
qp[i].out+=in[j];
j++;
}
}
for(i=0;i<m;i++)
{
getchar();
scanf("%[^\n]",in);
j=0;
while(in[j]!='\"') j++;
j++;
while(in[j]!='\"')
{
qz[i].in+=in[j];
j++;
}
j++;
while(in[j]!='\"') j++;
j++;
while(in[j]!='\"')
{
qz[i].out+=in[j];
j++;
}
qz[j].used=false;
}
getchar();
while(1)
{
int state=scanf("%[^\n]",in);
if(state==EOF)break;
if(state==0) ;
else
if(in[0]=='#')
{
cout<<"#";
for(i=0;i<m;i++) qz[i].used=false;
}
else
{
j=0;
while(in[j])
{
if(!match(j))
{
cout<<in[j];j++;
}
}
}
getchar();
cout<<endl;
}
return 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?