C语言北理工恶龙,看看哪里错了呗

#include<stdio.h>intmain(){intn,m,i,j,q=0,a[100],b[100],k=0,h=0,bet=0;scanf("%d%d",&n... #include<stdio.h>
int main()
{
int n,m,i,j,q=0,a[100],b[100],k=0,h=0,bet=0;
scanf("%d %d",&n,&m);
if(n<1||m>100) {printf("bit is doomed!\n"); return 0;}
int max[n];
for(i=0;i<n;i++)
{ scanf("%d",&a[i]);}
for(i=0;i<m;i++)
{ scanf("%d",&b[i]); }
if(m<n) {printf("bit is doomed!\n"); return 0;}

for(i=0;i<n;i++)
{
for(j=i;j<n;j++)
{
if(a[j]<=a[i]) {bet=a[j]; a[j]=a[i]; a[i]=bet;}
}
}
for(i=0;i<m;i++)
{
for(j=i;j<m;j++)
{
if(b[j]<=b[i]) {bet=b[j]; b[j]=b[i]; b[i]=bet;}
}
}
for(i=0,j=0;i<n&&j<m;i=i,j=j)
{
if(b[j]>=a[i]) {max[k]=b[j];k++;i++;j++;h++; }
else j++;
}
if(h<n) {printf("bit is doomed!"); return 0;}
for(i=0;i<n;i++)
{q+=max[i];
}
printf("%d\n",q);
}
题目
背景:
最近,北理工出现了一只恶龙,它长着很多头,而且还会吐火,它将会把北理工烧成废墟,
于是,校长下令召集全校所有勇士杀死这只恶龙。要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。校长想花
最少的学分数杀死恶龙,于是找到你寻求帮助。输入:
第一行 龙头数 n , 勇士人数 m ( 1<=n, m<=100 ) 接下来 n
行,每行包含一个整数,表示龙头的直径 接下来 m 行,每行包含一个整数,表示勇士的身高 l 输出:
如果勇士们能完成任务,输出校长需要花的最小费用;否则输 出 “ bit is doomed!

有两个例子通不过
展开
 我来答
百度网友53aaec5
推荐于2016-10-24 · 超过63用户采纳过TA的回答
知道小有建树答主
回答量:80
采纳率:100%
帮助的人:79.9万
展开全部
/*
此题明显考察贪婪算法
*/

#include<stdio.h>
#include<stdlib.h>
int m,n;
int drag_d[100]={0};

int stu_l[100]={0};
int visit[100]={0};

int cost=0;
int cmp(const void* a,const void* b)
{
    return *(int*)a-*(int*)b;
}
void init()
{
    freopen("test.txt","r",stdin);
    scanf("%d %d",&n,&m);
    int i;
    for(i=0;i<n;i++)
    {
        scanf("%d",&drag_d[i]);
    }
    for(i=0;i<m;i++)
    {
        scanf("%d",&stu_l[i]);
    }
    qsort(stu_l,m,4,cmp);//©ЛкыеепР
}
void solve()
{
    if(n>m)
    {
        printf("bit is doomed!\n");
        return;
    }

    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            if(!visit[j]&&stu_l[j]>=drag_d[i])
            {
                //printf("%d %d\n",stu_l[j],drag_d[i]);
                cost+=stu_l[j];
                visit[j]=1;
                break;
            }
        }
        if(j==m)
        {
            printf("bit is doomed!\n");
            return;
        }
    }
    printf("%d\n",cost);
    fclose(stdin);
}
int main()
{
    init();
    solve();
    return 0;
}

测试数据在test.txt中

20 20

11

11

11

11

11

11

11

11

1

1

1

1

1

1

1

1

1

1

1

1

22

22

12

1

1

11

1

111

111

1111

1

111

111

1

1

1

1

1

1

1

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式