大白兔奶糖12138 发表于 2021-12-19 09:18:13

大神求助

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

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



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



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


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

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

输出样例
No

傻眼貓咪 发表于 2021-12-19 09:34:37

#include <stdio.h>

int main(){
    int cards = {0}, n, flag = 1;
    char c;

    while((c = getchar()) != '\n') cards++;
    int len = sizeof(cards)/sizeof(int);

    scanf("%d", &n);

    while(n--){
      char str;
      scanf("%s", str);
      for(int i = 0; str; i++) cards]--;
    }

    for(int i = 0; i < len; i++) if(cards > 0) flag = 0;

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

    return 0;
}

jackz007 发表于 2021-12-19 09:46:49

本帖最后由 jackz007 于 2021-12-19 10:25 编辑

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

char foo(char a[] , char b[])
{
      char c , d , i , j , r                                             ;
      for(r = 1 , i = 0 ;b ; i ++) {
                c = (b >= 'A' && b <= 'Z') ? b + ' ' : b         ;
                for(j = 0 ; a ; j ++) {
                        d = (a >= 'A' && a <= 'Z') ? a + ' ' : a ;
                        if(d == c) break                                     ;
                }
                if(! a) {
                        r = 0                                                ;
                        break                                                ;
                }
      }
      return r                                                             ;
}

int main(void)
{
      char d , i , n , s                                       ;
      scanf("%s" , s)                                                   ;
      scanf("%d" , & n)                                                    ;
      for(d = i = 0 ; i < n ; i ++) {
                scanf("%s" , s)                                       ;
                if(foo(s , s)) d ++                              ;
      }
      if(d) printf("Yes\n")                                                ;
      else printf("No\n")                                                ;
}
      编译、运行实况
D:\00.Excise\C>g++ -o x x.c

D:\00.Excise\C>x
zAhimakaimen
6
sdm
zmk
ai
idf
henfd
nk
No

D:\00.Excise\C>x
zAhimakaimen
7
sdm
zmk
ai
idf
henfd
nk
xzahiomkewn
Yes

D:\00.Excise\C>
页: [1]
查看完整版本: 大神求助