问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请问以下杭电acm 1009 代码为什么老显示Runtime Error (ACCESS_VIOLATION)啊?要怎么改?

发布网友 发布时间:2022-04-24 13:56

我来回答

3个回答

热心网友 时间:2023-10-15 08:48

你的 mm 没有赋初值,所以会Runtime Error
还有就是 while的循环结束条件不足,如果到最后 m还是没有==0你就错了

这是ac的代码

#include<stdio.h>
int main()
{
int n,j[1000],c[1000],m,i,mm;double s=0.0,per[1000],max=0.0,rem;
while(scanf("%d%d",&m,&n),(m!=-1&&n!=-1))
{

rem=(double)m;
for(i=0;i<n;i++)
{scanf("%d%d",&j[i],&c[i]);
per[i]=(double)j[i]/c[i];

}

int k=0;

while(rem>0&&k<n)//定义一个k来记录次数
{
mm=0;k++;//mm赋初值
for(i=0;i<n;i++)
{
if(per[i]>max)
{max=per[i];
mm=i;}
}
per[mm]=0.0;max=0.0;

if(rem-c[mm]>=0)
{
rem-=c[mm];s+=j[mm];

}
else
{
s+=rem*j[mm]/c[mm];rem=0;

}

}

printf("%.3lf\n",s);
s=0.0;
}
return 0;
}

热心网友 时间:2023-10-15 08:48

这是我1009的代码 和你分享一下 就是一个小小的贪心 注意过程
#include<stdio.h>
#include<algorithm>
using namespace std;
typedef struct node{
double gs;
double jg;
double dj;
}mat;
mat a[1002];
int cmp(mat a,mat b)
{
return a.dj<b.dj;
}
int main()
{
int n,i;
double m,count;
while(scanf("%lf%d",&m,&n))
{
if(m==-1&&n==-1)break;
count=0;
for(i=0;i<n;i++)
{
scanf("%lf%lf",&a[i].gs,&a[i].jg);
a[i].dj=a[i].gs/a[i].jg;
}
sort(a,a+n,cmp);
i=n-1;
while(m!=0.0)
{
if(a[i].jg>=m)
{
count+=a[i].dj*m;
m=0;
}
else
{
count+=a[i].gs;
m-=a[i].jg;
i--;
}
}
printf("%.3lf\n",count);
}
return 0;
}追问谢谢~~

追答嗯嗯 不用客气~~

热心网友 时间:2023-10-15 08:49

#include<stdio.h>
int main()
{
int n,j[1000],c[1000],m,i,mm;
double s=0.0,per[1000],max=0.0,rem;
while(scanf("%d%d",&m,&n),(m!=-1&&n!=-1))
{
rem=(double)m;
for(i=0;i<n;i++)
{
scanf("%d%d",&j[i],&c[i]);
if(c[i])
per[i]=(double)j[i]/c[i];
else
per[i]=1e12;
}
while(rem>=0)
{
mm=-1;
max = -1;
for(i=0;i<n;i++)
{
if(per[i]>max)
{
max=per[i];
mm=i;
}
}
if(mm<0) break;
per[mm]=-2;
if(rem-c[mm]>=0)
{
rem-=c[mm];
s+=j[mm];
}
else
{
s+=rem*j[mm]/c[mm];
rem=-1;
}
}
printf("%.3lf\n",s);
s=0.0;
}
return 0;
}追问谢谢~

追答采纳呗

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
联想笔记本怎么连接wifi联想笔记本电脑连wifi的步骤 联想小新笔记本电脑如何连接wifi联想笔记本连接wifi步骤 联想电脑连接wifi教程lenovo电脑怎么连接wifi步骤 lenovo电脑wifi在哪里连接联想电脑在哪里连接wifi 联想台式电脑怎么连接无线上网联想电脑怎么连WiFi 联想电脑怎么连无线网lenovo电脑怎么连接wifi步骤 联想电脑怎么设置连接wifilenovo电脑怎么连接wifi步骤 祝福妹妹出国的句子 给在异乡打拼的朋友鼓励的句子通用四十二条 《鲁迅先生,我想对你说》的作文 急急急!!! 杭电acm 2132题Runtime Error(ACCESS_VIOLATION) 杭电acm2023,Runtime Error (ACCESS_VIOLATION)? ...runtime error(access_violation)拜托各位大神 各位前辈:杭电acm HDU 1233题,最简单的最小生成树问题,但我的为什么总是access violation呢 杭电acm2132 Runtime Error(ACCESS_VIOLATION) 下面程序为什么在ACM中出现runtime error (access violation 为什么U盘内存是满的但却不显示内容,如何解决? ACM绝对值排序问题,为什么出现ACCESS_VIOLATION错误啊? 优盘里有东西,但是显示不出来怎么办? acm2018显示Runtime Error(ACCESS_VIOLATION) 做杭电acm题目时提交的代码出现ACCESS_VIOLATION错误。 杭电acm总是Runtime Error (ACCESS_VIOLATION) acm运行时显示RUNTIME_ERROR [ACCESS_VIOLATION,怎么解决? 如何解决ACM中ACCESS_VIOLATION的问题 怎么才能让别人登自己的QQ看不到聊天记录。详细点,,谢谢 关联QQ后删掉聊天记录怎样让对方不知道 关联了qq号怎样使她上我qq但看不见我的聊天记录 双方QQ关联 如何在不解除关联的情况下 让对方看不见我的消息动态 关联qq如何不让对方看到信息 养殖基围虾的利润有多高? 关于ACM中Runtime Error at Test 1 (ACCESS_VIOLATION)的,程序和网址在下面,求大神解答!! 杭电ACM1004,Runtime Error,(ACCESS_VIOLATION) Runtime Error (ACCESS_VIOLATION) 到底出错在哪里呢?在线等,acm 提交很多次都错 杭电ACM 1002为什么总是 Runtime Error(ACCESS_VIOLATION)? 杭电ACM第1005题,自己测试使用结果都是对的,但是提交后提示Runtime Error (ACCESS_VIOLATION) 怎么注销银行绑定的手机号码? 杭电acm 一直显示Runtime Error (ACCESS_VIOLATION) http:&#47;&#47;acm.hdu.edu.cn&#47;showproblem.php?pid=2030 银行卡丢了,绑定的手机号码注销了,怎么办? 之前绑定银行卡的手机号注销了,可以去银行从新绑定新的手机号吗 银行卡绑定的手机号注销了怎么办 工行银行卡预留手机号注销了怎么更换? 请问留学中介(正规 较有名)的申请顾问收入一般多少? 银行绑定的手机号码应该怎么注销? 男女同事用陌陌聊天正常吗? 陌陌这个聊天工具好不好 银行卡绑定的手机号码换了手机银行怎么登录 陌陌聊天软件,太不靠谱了,太假了,还是自己太天真了? 银行卡的预留手机号怎么改 用陌陌聊天能给我们带来什么?好处多还是坏处多?能通过它找到朋友和另一半吗? 银行柜面预留的手机号是啥意思?