贪心算法—Problem G

贪心算法—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;

         }

}

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值