大神求助
题目描述有这样一个抽奖活动,主办方会向人们发放一些卡片,每张卡片上印有若干字母(大小写字母都可能有),每个人可以领取若干卡片(由于卡片有限,一个人不可能领取很多,领取规则就不展开了)。开奖的时候,主办方随机给出一串字母(大小写字母都可能有),如果这串字母中的每种字母都能在某一个人的卡片上找到的话,那么那个人就能获得主办方颁发的奖品。CoCo领到了若干张卡片,现在请你判断她是否能获奖。
输入要求
第一行输入一个字符串,表示主办方随机给出的那串字母。(长度小于100)
第二行输入一个正整数n(n≤50),表示CoCo领到的卡片数量。
接下来n行,每行输入一个字符串,表示CoCo手上每一张卡片上的内容。
输出要求
如果CoCo能够获奖输出Yes,否则输出No。
输入样例
zAhimakaimen
6
sdm
zmk
ai
idf
henfd
nk
输出样例
No #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 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]