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!
有两个例子通不过 展开
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!
有两个例子通不过 展开
1个回答
展开全部
/*
此题明显考察贪婪算法
*/
#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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询