利用python实现贪心算法-----摇摆序列

        今天看到了这个贪心算法的摇摆序列,确实挺难的,自己就没有按照老师所用到的c语言代码编写,并且用了自己所能够理解的方式进行编写代码,代码实现起来有点多余,但是最终还是实现了,大家可以自己进行优化,这个是用来和小白一起学习的,哈哈!

题目如下:

 实现思路如下:

        c语言中实用一种转换思想进行实现的,如果满足哪种条件,就直接调用那个函数进行实现

结果如下图:

python实现代码如下 

def sway_list(example):
    num=0 #用于后面计数
    num_0=2 #如果前一个数大于后一个数就将2添加数组中
    num_1=3#如果前一个数小于后一个数就将3添加数组中
    result_list=[]
    if len(example)< 2:
        print("example是一个摇摆序列,且摇摆序列的个数为{}".format(len(example)))
    else:
        for i in range(len(example)-1):
            if example[i]>example[i+1]:
                result_list.append(num_0)
            else:
                pass
            if example[i]<example[i+1]:
                result_list.append(num_1)
            else:
                pass
        print(result_list)
        for i in range(len(result_list)-1):
            if result_list[i]==result_list[i+1]:
                result_list[i]=100
        print(result_list)
        for result in result_list:
            if result==100:
                num+=1
        print(result_list)
        """
        为什么会加1?
        因为前面两个数进行比对的时候,最后一个数无法和下一个数进行比较,所以没法得到结果,但是最后一个数也算是摇摆树之中的
        所以需要加上一个数
        """
        return len(result_list) + 1 - num
if __name__ == '__main__':
    import time
    start_time=time.time()
    print("开始时间",start_time)
    example=[1,17,5,10,13,15,10,5,16,8]
    #example = [1, 2, 5, 10, 8, 15, 10, 11, 16, 8]
    result=sway_list(example)
    end_time=time.time()
    print("结束时间",end_time)
    print("一共有摇摆树{}".format(result))
    print("一共花费的时间为:{}".format(end_time-start_time))

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值