鱼C论坛

 找回密码
 立即注册
查看: 1028|回复: 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 编辑

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

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

int main(void)
{
        char d , i , n , s[100][100]                                         ;
        scanf("%s" , s[0])                                                   ;
        scanf("%d" , & n)                                                    ;
        for(d = i = 0 ; i < n ; i ++) {
                scanf("%s" , s[i + 1])                                       ;
                if(foo(s[i + 1] , s[0])) 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>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

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

    scanf("%d", &n);

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

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

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

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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] ; i ++) {
                c = (b[i] >= 'A' && b[i] <= 'Z') ? b[i] + ' ' : b[i]         ;
                for(j = 0 ; a[j] ; j ++) {
                        d = (a[j] >= 'A' && a[j] <= 'Z') ? a[j] + ' ' : a[j] ;
                        if(d == c) break                                     ;
                }
                if(! a[j]) {
                        r = 0                                                ;
                        break                                                ;
                }
        }
        return r                                                             ;
}

int main(void)
{
        char d , i , n , s[100][100]                                         ;
        scanf("%s" , s[0])                                                   ;
        scanf("%d" , & n)                                                    ;
        for(d = i = 0 ; i < n ; i ++) {
                scanf("%s" , s[i + 1])                                       ;
                if(foo(s[i + 1] , s[0])) 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>
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-9 17:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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