会活字印刷技术的胡桃

胡桃这段时间在学习使用活字印刷术印刷英语句子,为了在印刷时能够快速找到对应的字母方块,胡桃把所有的字母方块都进行了分类,并将相同的字母方块放入一个收纳箱里面,而为了知道每一个收纳箱里面的方块种类和数量,胡桃便给收纳箱上贴了标签,(标明字母方块的种类和数量,当收纳箱里的方块只有一个时,胡桃便不会标明数量),分类好后将收纳箱整齐的排成一行。为了检验自己的活字印刷技术,便想着印刷出一个成品,胡桃就提笔写下了一句英语句子。而为了知道自己方块的种类和数量够不够印刷出这一英语句子,于是请聪明的旅行者帮忙统计一下,而旅行者正在学习C语言,便写了一个程序去统计方块的种类和数量够不够^_^。

 

af642d36ea979c4460598a64acc694e8.png

输入格式:

第一行给出胡桃的收纳箱序列以@符号结束

第二行给出胡桃提笔写下的英语句子以@符号结束

输出格式:

如果胡桃的字母方块够就输出”You still left x square“(x为胡桃剩下的方块数量)

不够就输出”You need x square“(x为胡桃差的方块数量)。

 

样例解释: 以下两行的数据对应方式为‘方块所打印的字母’(方块数量)

胡桃的方块分别有: ’A’(1) ‘r‘(2) ‘e‘(1) ‘s‘(1) ‘t‘(1) ‘ ‘(2) ‘q‘(2) ‘i‘(2) ‘k‘(3) ‘m’(2)。

印刷英语句子需要:’A’(1) ‘r‘(2) ‘e‘(1) ‘s‘(1) ‘t‘(1) ‘ ‘(2) ‘q‘(2) ‘i‘(2)。

可以看出胡桃的方块拿出需要的去印刷英语句子后还剩下了3个k和2个m,所以胡桃的方块数量和种类都够,输出”You still left 5 square“

注: 输入数据保证没有数字种类的方块,数字只表示方块数量。

输入样例:

Ar2est 2q2i2k3m2@
Arrest qi qi@

输出样例:

You still left 5 square

 题解代码:

#include<bits/stdc++.h>
using namespace std;
int A[128],B[128];
int main()
{
    char c;
    int flag=1,i=0;
    string a,b;
    getline(cin,a);
    getline(cin,b);
    while(a[i]!='@'){
        int f=0,k=0;
        A[(int)a[i]]=1;
        c=a[i++];
        while(a[i]>='0'&&a[i]<='9'){
            k=k*10+(a[i++]-'0');
            f=1;
        }
        if(f) A[(int)c]=k;
    }
    i=0;
    int s1=0,s2=0;
    while(b[i]!='@') B[(int)b[i++]]++;
    for(i=0;i<=127;i++){
        if(A[i]<B[i]){
            flag=0;
        }
        s1+=A[i]-B[i];
        if(B[i]>=A[i]) s2+=B[i]-A[i];
    }
    if(flag) cout<<"You still left "<<s1<<" square";
    else cout<<"You need "<<s2<<" square";
    return 0;
}

22软件 张某人

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值