Dunglish

该博客给出一道题的题解,使用map来解决。构建两个map<string, int >,分别存储正确和错误的翻译个数,错误个数由总数减正确个数得出。根据总方案数和正确方案数情况,输出正确翻译及correct或错误翻译及incorrect。

题解:这道题用 map 做的话是很简单的,构建两个map<string, int >,一个用来储存正确的翻译个数,一个用来储存储存错误的翻译个数,总的和正确的可以轻松求出,错误的就是总的减去正确的。

如果总方案数为1,正确的也为1, 那么就输出正确的翻译和 correct;

否则输出错误的翻译和 incorrect;

 

#include<cstdio>
#include<iostream>
#include<map>
#include<string>
using namespace std;
typedef long long LL;
int n,m,i;
string a[100];
LL tot,co;
map<string,int>t,f;
map<string,string>o;
int main()
{
    cin>>n;
    for(i=1;i<=n;i++)
        cin>>a[i];
    cin>>m;
    while(m--)
    {
        string x,y,z;
        cin>>x>>y>>z;
        o[x]=y;
        if(z[0]=='c') t[x]++;//正确的
        else f[x]++;//错误的;
    }
    tot=1;
    co=1;
    for(i=1; i<=n; i++)
    {
        tot*=t[a[i]]+f[a[i]];
        co*=t[a[i]];
    }
    if(tot==1)
    {
        for(i=1;i<=n; i++)
            cout<<o[a[i]]<<" "<<endl;
        if(co==1) printf("correct");
        else printf("incorrect");
    }
    else
    {
        cout<<co<<" correct"<<endl;
        cout<<tot-co<<" incorrect"<<endl;
    }
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值