鱼C论坛

 找回密码
 立即注册
查看: 1134|回复: 2

[已解决]大神求助

[复制链接]
发表于 2021-12-19 09:18:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
题目描述
有这样一个抽奖活动,主办方会向人们发放一些卡片,每张卡片上印有若干字母(大小写字母都可能有),每个人可以领取若干卡片(由于卡片有限,一个人不可能领取很多,领取规则就不展开了)。开奖的时候,主办方随机给出一串字母(大小写字母都可能有),如果这串字母中的每种字母都能在某一个人的卡片上找到的话,那么那个人就能获得主办方颁发的奖品。CoCo领到了若干张卡片,现在请你判断她是否能获奖。

输入要求
第一行输入一个字符串,表示主办方随机给出的那串字母。(长度小于100)



第二行输入一个正整数n(n≤50),表示CoCo领到的卡片数量。



接下来n行,每行输入一个字符串,表示CoCo手上每一张卡片上的内容。


输出要求
如果CoCo能够获奖输出Yes,否则输出No。

输入样例
zAhimakaimen
6
sdm
zmk
ai
idf
henfd
nk

输出样例
No
最佳答案
2021-12-19 09:46:49
本帖最后由 jackz007 于 2021-12-19 10:25 编辑

    如果这串字母中的每种字母都能在某一个人的卡片上找到的话。。。
    "每种字母" 是何意,是忽略大小写的意思?
  1. #include <stdio.h>

  2. char foo(char a[] , char b[])
  3. {
  4.         char c , d , i , j , r                                               ;
  5.         for(r = 1 , i = 0 ;  b[i] ; i ++) {
  6.                 c = (b[i] >= 'A' && b[i] <= 'Z') ? b[i] + ' ' : b[i]         ;
  7.                 for(j = 0 ; a[j] ; j ++) {
  8.                         d = (a[j] >= 'A' && a[j] <= 'Z') ? a[j] + ' ' : a[j] ;
  9.                         if(d == c) break                                     ;
  10.                 }
  11.                 if(! a[j]) {
  12.                         r = 0                                                ;
  13.                         break                                                ;
  14.                 }
  15.         }
  16.         return r                                                             ;
  17. }

  18. int main(void)
  19. {
  20.         char d , i , n , s[100][100]                                         ;
  21.         scanf("%s" , s[0])                                                   ;
  22.         scanf("%d" , & n)                                                    ;
  23.         for(d = i = 0 ; i < n ; i ++) {
  24.                 scanf("%s" , s[i + 1])                                       ;
  25.                 if(foo(s[i + 1] , s[0])) d ++                                ;
  26.         }
  27.         if(d) printf("Yes\n")                                                ;
  28.         else printf("No\n")                                                  ;
  29. }
复制代码

        编译、运行实况
  1. D:\00.Excise\C>g++ -o x x.c

  2. D:\00.Excise\C>x
  3. zAhimakaimen
  4. 6
  5. sdm
  6. zmk
  7. ai
  8. idf
  9. henfd
  10. nk
  11. No

  12. D:\00.Excise\C>x
  13. zAhimakaimen
  14. 7
  15. sdm
  16. zmk
  17. ai
  18. idf
  19. henfd
  20. nk
  21. xzahiomkewn
  22. Yes

  23. D:\00.Excise\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-12-19 09:34:37 | 显示全部楼层
  1. #include <stdio.h>

  2. int main(){
  3.     int cards[256] = {0}, n, flag = 1;
  4.     char c;

  5.     while((c = getchar()) != '\n') cards[c]++;
  6.     int len = sizeof(cards)/sizeof(int);

  7.     scanf("%d", &n);

  8.     while(n--){
  9.         char str[100];
  10.         scanf("%s", str);
  11.         for(int i = 0; str[i]; i++) cards[str[i]]--;
  12.     }

  13.     for(int i = 0; i < len; i++) if(cards[i] > 0) flag = 0;

  14.     printf(flag ? "Yes" : "No");

  15.     return 0;
  16. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-12-19 09:46:49 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2021-12-19 10:25 编辑

    如果这串字母中的每种字母都能在某一个人的卡片上找到的话。。。
    "每种字母" 是何意,是忽略大小写的意思?
  1. #include <stdio.h>

  2. char foo(char a[] , char b[])
  3. {
  4.         char c , d , i , j , r                                               ;
  5.         for(r = 1 , i = 0 ;  b[i] ; i ++) {
  6.                 c = (b[i] >= 'A' && b[i] <= 'Z') ? b[i] + ' ' : b[i]         ;
  7.                 for(j = 0 ; a[j] ; j ++) {
  8.                         d = (a[j] >= 'A' && a[j] <= 'Z') ? a[j] + ' ' : a[j] ;
  9.                         if(d == c) break                                     ;
  10.                 }
  11.                 if(! a[j]) {
  12.                         r = 0                                                ;
  13.                         break                                                ;
  14.                 }
  15.         }
  16.         return r                                                             ;
  17. }

  18. int main(void)
  19. {
  20.         char d , i , n , s[100][100]                                         ;
  21.         scanf("%s" , s[0])                                                   ;
  22.         scanf("%d" , & n)                                                    ;
  23.         for(d = i = 0 ; i < n ; i ++) {
  24.                 scanf("%s" , s[i + 1])                                       ;
  25.                 if(foo(s[i + 1] , s[0])) d ++                                ;
  26.         }
  27.         if(d) printf("Yes\n")                                                ;
  28.         else printf("No\n")                                                  ;
  29. }
复制代码

        编译、运行实况
  1. D:\00.Excise\C>g++ -o x x.c

  2. D:\00.Excise\C>x
  3. zAhimakaimen
  4. 6
  5. sdm
  6. zmk
  7. ai
  8. idf
  9. henfd
  10. nk
  11. No

  12. D:\00.Excise\C>x
  13. zAhimakaimen
  14. 7
  15. sdm
  16. zmk
  17. ai
  18. idf
  19. henfd
  20. nk
  21. xzahiomkewn
  22. Yes

  23. D:\00.Excise\C>
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-25 06:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表