帮帮忙检查个很简单的程序啊,谢谢啦

来源:百度知道 编辑:UC知道 时间:2024/06/09 03:54:16
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1008
我的程序:
#include<stdio.h>
void main()
{
int n,i=1,j,t[100],time=0;
while(scanf("%d",&n)!=EOF&&n!=0)
{
for(j=1;j<=n;j++)
scanf("%d",&t[j]);
while(i!=n)
{
if((t[i]-t[i+1])<0)
time=time+5+(t[i+1]-t[i])*6;
else if((t[i]-t[i+1])>0)
time=time+5+(t[i]-t[i+1])*4;
i++;
}
printf("%d\n",time+t[1]*6+5);
}
}
运行后的提示是:runtime error(ACCESS_VIOLATION)

运行超时,换个更好的算法

#include<stdio.h>
void main()
{
int n,i=1,j,k=0,time=0;
while(scanf("%d",&n)!=EOF&&n!=0)
{
k=0;
time=0;
j=i;
for(j=1;j<=n;j++){
scanf("%d",&i);
if(i>k)
time+=(i-k)*6+5;
else
time+=(k-i)*4+5;
k=i;
}
printf("%d\n",time);
}
}
修改完毕,已经Accepted

算法很好,只是需要对数据Reset.

还有电梯停留在同一层也要再加5秒..

#include<stdio.h>
int main()
{
int n,i=1,j,t[100],time=0;
while(scanf("%d",&n)!=EOF&&n!=0)
{
i=1; // Reset i
time=0; // Reset time
for(j=1;j<=n;j++)
scanf("%d",&t[j]);
while(i!=n)
{
if((t[i]-t[i+1])<0)
time=time+5+(t[i+1]-t[i])*6;
else if((t[i]-t[i+1])>0)
time=time+5+(t[i]-t[i+1])*4;
else
time+=5; // If the elevator stay, time also a