这是一个简单的计算时间的小问题,只要明白怎样计算时间就可以了!
下面我先说一下方法(以题目中给出的数据为例,这个题目中给出的数据恰好包含了三种情况所要的信息):
一.1从零层到第一个楼层(即第一个输入的数据)所用的时间:6*2+5=17
二.2从不是零层的数据到达下一个数据所用的时间(下一个楼层的数据大于本身楼层数据的情况):6*(3-2)+5=11
3.从不是零层的数据到达下一个数据所用的时间(下一个楼层的数据小于本身楼层数据的情况):4*(3-1)+5=13
而第二组数据中还有一个从零层到第一个楼层所用的时间:6*2+5=17。所以第二组数据所用的时间是17+11+13=41
下面是代码:
#include<stdio.h>
int main()
{
int n,a[105],b[105];
while(scanf("%d",&n)!=EOF&&n!=0)//这点困扰了我很长时间,我只写了while(scanf("%d",&n)!=EOF)后者只写了while(scanf("%d",&n)!=0)均不行
{
int i,m=0;
for(i=0; i<n; i++)
{
scanf("%d",&a[i]);
}
for(i=0; i<n; i++)
{
if(i==0) //从零层到第一个楼层(即第一个输入的数据)所用的时间
b[i]=6*a[i]+5;
else if(a[i]>a[i-1]) //从不是零层的数据到达下一个数据所用的时间(下一个楼层的数据大于本身楼层数据的情况)
b[i]=6*(a[i]-a[i-1])+5;
else //从不是零层的数据到达下一个数据所用的时间(下一个楼层的数据小于本身数据的情况)
b[i]=4*(a[i-1]-a[i])+5;
}
for(i=0; i<n; i++)
{
m+=b[i];
}
printf("%d\n",m);
}
return 0;
}