C语言 北理工的恶龙有两个小问题
最近,北理工出现了一只恶龙,它长着很多头,而且还会吐火,它将会把北理工烧成废墟,于是,校长下令召集全校所有勇士杀死这只恶龙。要杀死这只龙,必须把它所有的头都砍掉,每个勇士...
最近,北理工出现了一只恶龙,它长着很多 头,而且还会吐火,它将会把北理工烧成废墟, 于是,校长下令召集全校所有勇士杀死这只恶龙。要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。校长想花 最少的学分数 杀死恶龙,于是找到你寻求帮助。
输入:第一行 龙头数 n , 勇士人数 m ( 1<=n, m<=100 ) 接下来 n 行,每行包含一个整数,表示龙头的直径 接下来 m 行,每行包含一个整数,表示勇士的身高 l
输出: 如果勇士们能完成任务,输出校长需要花的最小费用;否则输 出 “bit is doomed! ”
#include<stdio.h>
int main()
{int a[100],b[100],c[100],m,n,k,i,j,t,s=0;
for(i=0;i<=99;i++)
c[i]=0;
scanf("%d %d",&n,&m);
for(k=0;k<n;k++)
scanf("%d",&a[k]);
for(k=0;k<m;k++)
scanf("%d",&b[k]);
if(m<n) printf("bit is doomed!\n");
else
{
{for(i=0;i<n;i++)
{for(j=i+1;j<n;j++)
if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
}
}
{for(i=0;i<m;i++)
{for(j=i+1;j<m;j++)
if(b[i]>b[j])
{t=b[i];b[i]=b[j];b[j]=t;}
}
}
t=0;
{for(i=0;i<n;i++)
{for(j=0;j<m;j++)
if(a[i]<=b[j])
{c[t]=b[j];t++;b[j]=0;break;}
}
}
if(t<n) printf("bit is doomed!\n");
else {for(i=0;i<=t;i++) s=s+c[i];printf("%d\n",s);
}
}
}
为什么要给数组C[]赋初值,要不然就是很大的数字?
为什么要加b[j]=0? 展开
输入:第一行 龙头数 n , 勇士人数 m ( 1<=n, m<=100 ) 接下来 n 行,每行包含一个整数,表示龙头的直径 接下来 m 行,每行包含一个整数,表示勇士的身高 l
输出: 如果勇士们能完成任务,输出校长需要花的最小费用;否则输 出 “bit is doomed! ”
#include<stdio.h>
int main()
{int a[100],b[100],c[100],m,n,k,i,j,t,s=0;
for(i=0;i<=99;i++)
c[i]=0;
scanf("%d %d",&n,&m);
for(k=0;k<n;k++)
scanf("%d",&a[k]);
for(k=0;k<m;k++)
scanf("%d",&b[k]);
if(m<n) printf("bit is doomed!\n");
else
{
{for(i=0;i<n;i++)
{for(j=i+1;j<n;j++)
if(a[i]>a[j])
{t=a[i];a[i]=a[j];a[j]=t;}
}
}
{for(i=0;i<m;i++)
{for(j=i+1;j<m;j++)
if(b[i]>b[j])
{t=b[i];b[i]=b[j];b[j]=t;}
}
}
t=0;
{for(i=0;i<n;i++)
{for(j=0;j<m;j++)
if(a[i]<=b[j])
{c[t]=b[j];t++;b[j]=0;break;}
}
}
if(t<n) printf("bit is doomed!\n");
else {for(i=0;i<=t;i++) s=s+c[i];printf("%d\n",s);
}
}
}
为什么要给数组C[]赋初值,要不然就是很大的数字?
为什么要加b[j]=0? 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询