您的位置:首页 > 其它

贪心算法—Problem G

2016-03-18 17:08 218 查看
贪心算法—Problem G
题意
一部电梯,起始在0层,输入一组数据表示楼梯先后到达的层数。已知每向上一层时间为6s,下降一层4s,每到达一次指定的楼层就停留5s,求输入一组数据,输出走完这些楼层所需要的总时间。
解题思路
建立数组存储楼层,第一个数据肯定在0上直接乘6s;其余的建立循环遍历,比较与前一个楼层的大小并把两者之间的差值乘6或4;最后再加上每一个目的楼层停留的时间,即总时间。

感想
不知道此题是否属于贪心算法,但好像我的做法并不是贪心,但提交后AC了,也不知前后如果两个楼层相同的话是否应该再加停留时间,结果是第一次提交时WA,而注释掉那句代码后,AC了。所以可能要算上。
AC代码
#include<iostream>

#include<cstring>

using namespace std;

int main()

{

int n;

int a[101];

while(cin>>n,n)

{

int i,j,count;

inttime = 0;

memset(a,0,sizeof(a));

for(i=0;i<n;i++)

{

cin>>a[i];

}

j=0;

count=n;

time=a[j]*6;

for(i=1;i<n;i++,j++)

{

if(a[i]>a[j]) time+=(a[i]-a[j])*6;

else if(a[i]<a[j]) time+=(a[j]-a[i])*4;

}

time+=5*count;

cout<<time<<endl;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: