前言:
做题的时候脑抽,想记录每个单词的所有正确翻译,但是根本不需要呀,只要统计个数即可。
收获:
- map用法有时候有点迷
- 读string类型空格是不能读的,总是不太记得清
- 与其统计个数,不如边遍历边乘。
#include<bits/stdc++.h>
using namespace std;
const int N=25;
map<string,int> cor,inc;
map<string,string> match;
string s[25];
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;++i)
cin>>s[i];
int m;
cin>>m;
while(m--)
{
string a,b,c;
cin>>a>>b>>c;
match[a]=b;
if(c[0]=='c')
cor[a]++;
else
inc[a]++;
}
int tot=1,cnt=1;//tot表示总可能数,cnt为正确数
for(int i=1;i<=n;++i) //与其提前统计个数,不如边循环边乘
{
tot*=cor[s[i]]+inc[s[i]];
cnt*=cor[s[i]];
}
if(tot==1)
{
for(int i=1;i<=n;++i)
cout<<match[s[i]]<<' '<<endl;
cout<<endl;
if(cnt==tot)
cout<<"correct"<<endl;
else
cout<<"incorrect"<<endl;
}
else
{
cout<<cnt<<' '<<"correct"<<endl;
cout<<tot-cnt<<' '<<"incorrect"<<endl;
}
return 0;
}