ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

1039 到底买不买 (20分)

2020-11-05 19:35:20  阅读:207  来源: 互联网

标签:26 20 到底 int 样例 珠串 珠子 1039 need


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

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

figbuy.jpg

图 1

输入格式:

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

输出格式:

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

输入样例 1:

ppRYYGrrYBR2258
YrR8RrY
 

输出样例 1:

Yes 8
 

输入样例 2:

ppRYYGrrYB225
YrR8RrY
 

输出样例 2:

No 2

先贴上我写的代码
#include<iostream>
#include<string>
using namespace std;
int cntnum[10];
int a[26];
int A[26];
int cntnum1[10];
int a1[26];
int A1[26];
int surplus;
int need;
int main(){
    string s;  //售卖的 
    string b;  //购买的 
    cin>>s;
    cin>>b;
    
    
    for(int i=0;i<s.length();i++){
        if (s[i] >= 'a' && s[i] <= 'z')  // 统计某个小写字母出现的次数
         {
               a[s[i]-'a']++;//小写检测
        } else if(s[i] >= 'A' && s[i] <= 'Z')  // 统计某大写字母出现的次数
        {
            A[s[i]-'A']++;//大写检测
        }else{
            for(int j=0;j<=9;j++){
                if(s[i]-'0'==j)
                    cntnum[j]++;
            }
        }
    }
    for(int i=0;i<b.length();i++){
        if (b[i] >= 'a' && b[i] <= 'z')  // 统计某个小写字母出现的次数
         {
               a1[b[i]-'a']++;//小写检测
        } else if(b[i] >= 'A' && b[i] <= 'Z')  // 统计某大写字母出现的次数
        {
            A1[b[i]-'A']++;//大写检测
        }else{
            for(int j=0;j<=9;j++){
                if(b[i]-'0'==j)
                    cntnum1[j]++;
            }
        }
    }
    
    for(int i=0;i<10;i++){
   
    
        if(cntnum[i]<cntnum1[i])
        
             need+=cntnum1[i]-cntnum[i];
        
        
    } 
    for(int i=0;i<26;i++){
   
    
        if(a[i]<a1[i])
        
             need+=a1[i]-a[i];
         
        
    } 
    for(int i=0;i<26;i++){
    
    
        if(A[i]<A1[i])
         
             need+=A1[i]-A[i];
         
        
    } 
    if(need<=0)
    cout<<"Yes"<<" "<<s.length()-b.length()<<endl;
    else
    cout<<"No"<<" "<<need<<endl;

}

我的思路是先计算出卖家的珠子的种类及个数和买家需要的珠子的种类和个数,然后定义一个need变量,记录缺的珠子的个数,然后根据need的值,若need的值小于等于0,说明不缺珠子,输出“Yes”,多的珠子就是卖家的珠子数减去买家需要的珠子数;若need的值大于0,说明缺珠子,缺的个数就是need的值。

标签:26,20,到底,int,样例,珠串,珠子,1039,need
来源: https://www.cnblogs.com/ZR222/p/13933487.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有