背景:
最近,北理工出现了一只恶龙,它长着很多 头,而且还会吐火,它将会把北理工烧成废墟, 于是,校长下令召集全校所有勇士杀死这只恶龙。要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。校长想花 最少的学分数 杀死恶龙,于是找到你寻求帮助。

输入:

第一行 龙头数 n , 勇士人数 m ( 1<=n, m<=100 ) 接下来n行,每行包含一个整数,表示龙头的直径,接下来 m 行,每行包含一个整数,表示勇士的身高

输出:

如果勇士们能完成任务,输出校长需要花的最小费用;否则输 出 “bit is doomed! ”

C语言练习题_北理工的恶龙-LMLPHP

 #include <stdio.h>

 int main()
{
int i,j,t;
int dragon[],dragon_f[];
int warrior[],warrior_f[];
int dragon_n,warrior_n; scanf("%d %d",&dragon_n,&warrior_n);
for (i=; i<dragon_n; i++){
scanf("%d",&dragon[i]);
}
for (i=; i<warrior_n; i++){
scanf("%d",&warrior[i]);
}
for (i=; i<; i++){
dragon_f[i] = warrior_f[i] = ;
}
// sort
for (i=; i<dragon_n-; i++){
for (j=; j<dragon_n-i-; j++){
if (dragon[j] > dragon[j+]){
t = dragon[j+];
dragon[j+] = dragon[j];
dragon[j] = t;
}
}
}
for (i=; i<warrior_n-; i++){
for (j=; j<warrior_n-i-; j++){
if (warrior[j] > warrior[j+]){
t = warrior[j+];
warrior[j+] = warrior[j];
warrior[j] = t;
}
}
} for (i=; i<dragon_n; i++){
for (j=; j<warrior_n; j++){
if (dragon[i] <= warrior[j] && dragon_f[i] == && warrior_f[j] == ){
dragon_f[i] = ;
warrior_f[j] = ;
}
}
}
for (i=; i<dragon_n; i++){
if (dragon_f[i] == ){
printf("bit is doomed!\n");
return ;
}
}
int sum = ;
for (i=; i<warrior_n; i++){
if (warrior_f[i] == ){
sum = sum + warrior[i];
}
}
printf("%d\n",sum);
return ;
}
04-18 19:13