C语言 北理工的恶龙
背景:最近,北理工出现了一只恶龙,它长着很多头,而且还会吐火,它将会把北理工烧成废墟,于是,校长下令召集全校所有勇士杀死这只恶龙。要杀死这只龙,必须把它所有的头都砍掉,每...
背景:
最近,北理工出现了一只恶龙,它长着很多头,而且还会吐火,它将会把北理工烧成废墟,
于是,校长下令召集全校所有勇士杀死这只恶龙。要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。校长想花
最少的学分数杀死恶龙,于是找到你寻求帮助。输入:
第一行 龙头数 n , 勇士人数 m ( 1<=n, m<=100 ) 接下来 n
行,每行包含一个整数,表示龙头的直径 接下来 m 行,每行包含一个整数,表示勇士的身高 l 输出:
如果勇士们能完成任务,输出校长需要花的最小费用;否则输 出 “ bit is doomed!
”
测试输入期待的输出时间限制内存限制额外进程测试用例 1以文本方式显示2 3↵5↵4↵7↵8↵4↵以文本方式显示11↵1秒64M0测试用例 2以文本方式显示2 1↵5↵5↵10↵以文本方式显示bit is doomed!↵1秒64M0
我的问题是有一个隐藏测试过不去 求解答
#include <stdio.h>
int main()
{
int n,m;
int i,j,k,p,q,cen1,cen2,e,sum=0,count=0;
char a[101],b[101];
scanf("%d%d",&n,&m);
for (i=0; i<n; i++)
scanf("%d",&a[i]);
for (j=0; j<m; j++)
scanf("%d",&b[j]);
if (n>m||m>100||n<0)
{
printf("bit is doomed!\n");
return 0;
}
for (i=0; i<n-1; i++)
{
p=i;
for (j=i+1; j<n; j++)
if (a[p]>a[j])
p=j;
if(p!=i)
{
cen1=a[p];
a[p]=a[i];
a[i]=cen1;
}
}
for (i=0; i<m-1; i++)
{
p=i;
for (j=i+1; j<m; j++)
if (b[p]>b[j])
p=j;
if(p!=i)
{
cen2=b[p];
b[p]=b[i];
b[i]=cen2;
}
}
for (e=0,k=0;;)
{
if(a[e]<=b[k])
{
sum=sum+b[k];
count=count+1;
e++;
}
else
k++;
if(k>m)
{ printf("bit is doomed!\n");
return 0;
}
if(count==n&&k<=m)
{
printf("%d\n",sum);
break;
}
if(count!=n&&k==m)
{
printf("bit is doomed!\n");
break;
}
}
} 展开
最近,北理工出现了一只恶龙,它长着很多头,而且还会吐火,它将会把北理工烧成废墟,
于是,校长下令召集全校所有勇士杀死这只恶龙。要杀死这只龙,必须把它所有的头都砍掉,每个勇士只能砍一个龙头,龙的每个头大小都不一样,一个勇士只有在身高不小于龙头的直径的情况下才能砍下它。而且勇士们要求,砍下一个龙头必须得到和自己身高厘米数一样的学分。校长想花
最少的学分数杀死恶龙,于是找到你寻求帮助。输入:
第一行 龙头数 n , 勇士人数 m ( 1<=n, m<=100 ) 接下来 n
行,每行包含一个整数,表示龙头的直径 接下来 m 行,每行包含一个整数,表示勇士的身高 l 输出:
如果勇士们能完成任务,输出校长需要花的最小费用;否则输 出 “ bit is doomed!
”
测试输入期待的输出时间限制内存限制额外进程测试用例 1以文本方式显示2 3↵5↵4↵7↵8↵4↵以文本方式显示11↵1秒64M0测试用例 2以文本方式显示2 1↵5↵5↵10↵以文本方式显示bit is doomed!↵1秒64M0
我的问题是有一个隐藏测试过不去 求解答
#include <stdio.h>
int main()
{
int n,m;
int i,j,k,p,q,cen1,cen2,e,sum=0,count=0;
char a[101],b[101];
scanf("%d%d",&n,&m);
for (i=0; i<n; i++)
scanf("%d",&a[i]);
for (j=0; j<m; j++)
scanf("%d",&b[j]);
if (n>m||m>100||n<0)
{
printf("bit is doomed!\n");
return 0;
}
for (i=0; i<n-1; i++)
{
p=i;
for (j=i+1; j<n; j++)
if (a[p]>a[j])
p=j;
if(p!=i)
{
cen1=a[p];
a[p]=a[i];
a[i]=cen1;
}
}
for (i=0; i<m-1; i++)
{
p=i;
for (j=i+1; j<m; j++)
if (b[p]>b[j])
p=j;
if(p!=i)
{
cen2=b[p];
b[p]=b[i];
b[i]=cen2;
}
}
for (e=0,k=0;;)
{
if(a[e]<=b[k])
{
sum=sum+b[k];
count=count+1;
e++;
}
else
k++;
if(k>m)
{ printf("bit is doomed!\n");
return 0;
}
if(count==n&&k<=m)
{
printf("%d\n",sum);
break;
}
if(count!=n&&k==m)
{
printf("bit is doomed!\n");
break;
}
}
} 展开
若以下回答无法解决问题,邀请你更新回答
3个回答
展开全部
一个团岁勇士改或盯只能砍一个头
if(a[e]<=b[k])
{
sum=sum+b[k];
count=count+1;
e++;
k++; // 砍头之后勇士也歇菜核和了
}
if(a[e]<=b[k])
{
sum=sum+b[k];
count=count+1;
e++;
k++; // 砍头之后勇士也歇菜核和了
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-11-27
展开全部
2 2
5 5
5 10
answer: 15
注意一个勇士只能砍一个头。
5 5
5 10
answer: 15
注意一个勇士只能砍一个头。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2018-05-29
展开全部
#include <stdio.h>
int main()
{
int n ,m;int a[20],b[20],c[20];int i,p,o,j;
scanf("%d %d\n",&n,&m);
for(i=0;i<n;i++)
scanf("%d\n",&a[i]);
for(i=0;i<m;i++)
scanf("%d\核饥n",&b[i]);
if(n>m) {printf("bit is doomed!\n");return 0;}
for(i=0;i<基绝n-1;i++)
{ p=i;
for(j=i+1;j<n;j++)
if(a[p]>a[j]) p=j;
if(p!=i) { o=a[p]; a[p]=a[i];a[i]=o;
}
}
for(i=0;i<m-1;i++)
{ p=i;
for(j=i+1;j<m;j++)
if(b[p]>b[j]) p=j;
if(p!=i) { o=b[p]; b[p]=b[i];b[i]=o;
}
}
p=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
if(b[j]>=a[i]) { c[i]=b[j];p++;
for(o=0;o<20;o++)
{ if(o<m-j-1) b[o]=b[o+j+1];
else b[o]=0;
}
break;
}
}
if(p<n) printf("改锋返bit is doomed!\n");
else { for(i=0,o=0;i<n;i++) o=o+c[i];
printf("%d\n",o);
}
return 0;
}
int main()
{
int n ,m;int a[20],b[20],c[20];int i,p,o,j;
scanf("%d %d\n",&n,&m);
for(i=0;i<n;i++)
scanf("%d\n",&a[i]);
for(i=0;i<m;i++)
scanf("%d\核饥n",&b[i]);
if(n>m) {printf("bit is doomed!\n");return 0;}
for(i=0;i<基绝n-1;i++)
{ p=i;
for(j=i+1;j<n;j++)
if(a[p]>a[j]) p=j;
if(p!=i) { o=a[p]; a[p]=a[i];a[i]=o;
}
}
for(i=0;i<m-1;i++)
{ p=i;
for(j=i+1;j<m;j++)
if(b[p]>b[j]) p=j;
if(p!=i) { o=b[p]; b[p]=b[i];b[i]=o;
}
}
p=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
if(b[j]>=a[i]) { c[i]=b[j];p++;
for(o=0;o<20;o++)
{ if(o<m-j-1) b[o]=b[o+j+1];
else b[o]=0;
}
break;
}
}
if(p<n) printf("改锋返bit is doomed!\n");
else { for(i=0,o=0;i<n;i++) o=o+c[i];
printf("%d\n",o);
}
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询