B1039/A1092 到底买不买 (20分)【C语言】

原题链接

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

为方便起见,我们用[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

实现代码:

#include <stdio.h>
#include <string.h>int HashTable[80] = {0}, miss = 0;
// HashTable记录第一串中每种颜色的个数,miss记录缺少的珠子个数//将数字和字母转换为HashTable的下标
int change(char c){if(c>='0' &&c<='9') return c-'0';if(c>='a' && c<='z') return c-'a'+10;if(c>='A' && c<='Z') return c-'A'+36;
} int main()
{char whole[1010], target[1010];gets(whole);gets(target);int len1 = strlen(whole);int len2 = strlen(target);int i, id;for(i=0; i<len1; ++i){id = change(whole[i]);HashTable[id]++;}for(i=0; i<len2; ++i){id = change(target[i]);HashTable[id]--;if(HashTable[id]<0) miss++;}if(miss>0) printf("No %d", miss);else printf("Yes %d", len1-len2);return 0;
}

B1039/A1092 到底买不买 (20分)【C语言】相关推荐

  1. L1-049 天梯赛座位分配 (20分)(C语言)

    L1-049 天梯赛座位分配 (20分)(C语言) 天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情.为此我们制定如下策略:假设某赛场有 N 所学校参赛 ...

  2. L1-020 帅到没朋友 (20分)(C语言)

    L1-020 帅到没朋友 (20分)(C语言) 当芸芸众生忙着在朋友圈中发照片的时候,总有一些人因为太帅而没有朋友.本题就要求你找出那些帅到没有朋友的人. 输入格式: 输入第一行给出一个正整数N(≤1 ...

  3. 【PAT】B1032 挖掘机技术哪家强 (20 分)_C语言实现

    1 挖掘机技术哪家强 (20 分) 为了用事实说明挖掘机技术到底哪家强,PATPATPAT 组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第 111 行给出 ...

  4. PAT 1094 谷歌的招聘 (20 分) c语言

    思路是用一个字符串储存输入的正整数,写一个函数求连续几位的值(结合指针),再用一个函数判断是否为素数,求得第一个素数,细节写在注释里了,这次的测试点没什么问题,要注意字符串所取长度的问题,一定要取到所 ...

  5. L1-059 敲笨钟 (20 分)C语言

    题目 L1-059 敲笨钟 (20 分) 微博上有个自称"大笨钟V"的家伙,每天敲钟催促码农们爱惜身体早点睡觉.为了增加敲钟的趣味性,还会糟改几句古诗词.其糟改的方法为:去网上搜寻 ...

  6. 数天数-可用字典 (20 分) C语言

    数天数-可用字典 (20 分) 小艳昨晚梦见了一位老人,老人告诉她在她第20个生日时她的白马王子将会出现,她很想知道还要过几天她的白马王子才会出现,但是她总是算不清楚,所以今天一大早就找到了你--传说 ...

  7. 1062最简分数c语言,1062 最简分数 (20分)C语言

    一个分数一般写成两个整数相除的形式:N/M,其中 M 不为0.最简分数是指分子和分母没有公约数的分数表示形式. 现给定两个不相等的正分数 N1/M1和 N2/M​2,要求你按从小到大的顺序列出它们之间 ...

  8. PAT 1018 锤子剪刀布 (20分) C语言实现

    1018 锤子剪刀布 (20分) 现给出两人的交锋记录,请统计双方的胜.平.负次数,并且给出双方分别出什么手势的胜算最大. 输入格式: 输入第 1 行给出正整数 N(≤10 ​5 ​​ ),即双方交锋 ...

  9. PAT 1104 天长地久 (20 分) C语言

    这个题目的关键在于对代码的简化,很容易就超时,所以一定要尽可能简化,我的简化思路放在文章最后,欢迎参考与指正. 题目: 1104 天长地久 (20 分) "天长地久数"是指一个 K ...

最新文章

  1. Python IDLE或shell中切换路径
  2. 如何理解c和c ++的复杂类型声明 (转)
  3. C#读取与修改XML文档
  4. Web集成工具Thinfinity® VirtualUI™ v2.0发布丨附下载
  5. 要活多久才能赚回你交的养老金?
  6. YTU 2924: 文件操作--二进制文件读入
  7. 约瑟夫问题(顺序表)
  8. java面向对象课件_《JAVA面向对象基础》PPT课件.ppt
  9. 金属商务本-戴尔Vostro成就3450评测
  10. 【图像修复】基于matlab GUI空域滤波图像复原【含Matlab源码 849期】
  11. ISO14001认证用处有哪些?
  12. 【逆向】Android逆向破解某APP
  13. 微商深度揭秘——减肥产品、推广方法
  14. ftp服务器默认使用tcp协议的几号端口,ftp服务器默认的tcp端口号
  15. gitlab 屏蔽注册功能
  16. c51 c语言 16位二进制转换为bcd码,16位二进制转换为BCD码的C51汇编程序.doc
  17. 论文阅读:MobileNetV2: Inverted Residuals and Linear Bottlenecks(MobileNetV2)
  18. 计算机专业有非全日制研究生,计算机专业有双证在职研究生吗?
  19. 身份证识别和聚合收单
  20. golang远程桌面服务器,go+govcl+go-ole实现的windows远程桌面

热门文章

  1. 数据库常用的增删改查sql语句
  2. 转:不同域名注册商修改 DNS 方法
  3. VB.NET中的事件与委托(警察抓小偷)
  4. <机器学习>决策树理论
  5. 汇编课程设计:汽车小鸟动画
  6. C#中结构体和类区别和联系
  7. Python语言基础学习(六)
  8. 启动Fiddler导致浏览器显示“您的连接不是私密连接”
  9. android item复用,Android RecyclerView 复用错乱通用解法详解
  10. GPT-4的黑箱运作方式引科学家不满