Step 1理解题意
这题的意思是先输入三个字符串,无视大小写,忽略字符,将三个字符串的所有排序与匹配串匹配,如果可以完全匹配,就输出“ACC”,如果不行,输出“WA”
Step 2分析解法
写一个处理函数,使用一个新的字符串,将所有大写转换成小写,将字符扔掉,只留字母丢进这个新字符串中,如下程序所示:
string cl(string q){
int len = q.length();
string s = "";
for(int j = 0; j < len;j++){
if(q[j] >= 'A' && q[j] <= 'Z') {s += (q[j] - 'A' + 'a');}
if(q[j] >= 'a' && q[j] <= 'z') {s += q[j];}
}
return s;
}
然后只要将所有字符串的全排列与给定的字符串匹配即可
Step 3 AC Code
#include<bits/stdc++.h>
using namespace std;
string s1;
string cl(string q){
int len = q.length();
string s = "";
for(int j = 0; j < len;j++){
if(q[j] >= 'A' && q[j] <= 'Z') {s += (q[j] - 'A' + 'a');}
if(q[j] >= 'a' && q[j] <= 'z') {s += q[j];}
}
return s;
}
int main(){
//freopen("work.in","r",stdin);
//freopen("work.out","w",stdout);
cin >> s1;
string a = cl(s1);
cin >> s1;
string b = cl(s1);
cin >> s1;
string c = cl(s1);
int n;
scanf("%d",&n);
while(n--){
cin >> s1;
string d = cl(s1);
if(a + b + c == d||a + c + b == d||b + a + c == d||b + c + a == d||c + a + b == d||c + b + a == d) printf("ACC\n");
else printf("WA\n");
}
return 0;
}