1039 到底买不买(C++)

1039 到底买不买 (20 分)

1

小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。

为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如在图1中,第3串是小红想做的珠串;那么第1串可以买,因为包含了全部她想要的珠子,还多了8颗不需要的珠子;第2串不能买,因为没有黑色珠子,并且少了一颗红色的珠子。 1039 到底买不买 (20 分)

小红想买些珠子做一串自己喜欢的珠串。卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖。于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少多余的珠子;如果不是,那么告诉她缺了多少珠子。

为方便起见,我们用[0-9]、[a-z]、[A-Z]范围内的字符来表示颜色。例如在图1中,第3串是小红想做的珠串;那么第1串可以买,因为包含了全部她想要的珠子,还多了8颗不需要的珠子;第2串不能买,因为没有黑色珠子,并且少了一颗红色的珠子。

输入格式:

每个输入包含 1 个测试用例。每个测试用例分别在 2 行中先后给出摊主的珠串和小红想做的珠串,两串都不超过 1000 个珠子。

输出格式:

如果可以买,则在一行中输出 Yes 以及有多少多余的珠子;如果不可以买,则在一行中输出 No 以及缺了多少珠子。其间以 1 个空格分隔。

输入样例 1:

ppRYYGrrYBR2258

YrR8RrY

结尾无空行

输出样例 1:

Yes 8

结尾无空行

输入样例 2:

ppRYYGrrYB225

YrR8RrY

结尾无空行

输出样例 2:

No 2

结尾无空行

———————————————

开辟两个数组a ,b ,

a存放摊主的弹珠个数

b存放要买的弹珠个数

循环遍历a,b

if(a[i]<b[i]) 那么就是摊主有的弹珠不够我要的 设置flag=0 ,

然后计算 sum += ( b[i]-a[i] ) ; 这是一共缺少多少个;

否则 那就是够了 直接输出 yes 剩余多的就是s1.length() - s2.length() ;

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string s1 ,s2 ;
    cin >> s1 >>s2 ;
    int a[200] = {0} ;
    int b[200] = {0} ;
   
    for(int i =0 ; i<s1.size();  i++)
    {
         a[s1[i]] ++ ;
      } 
        for(int i=0 ; i<s2.length() ; i++)
        {
            b[s2[i]] ++;
        }
    int flag =1 ,sum = 0;
   for(int i =0;i<200 ; i++)
   {
       if(a[i]<b[i])  // No
       {
           flag =0;  
           sum += (b[i]-a[i]) ;
       }
   }
    if(flag ==0) cout <<"No " <<sum ;
    else cout  <<"Yes "<<s1.length() - s2.length() ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值