一、雷达安装问题(贪心算法)

1.1 问题描述

1.2 问题分析

1.3 程序代码

# -*- coding: utf-8 -*-
"""
Created on Tue Mar 20 15:33:38 2018@author: lizihua
"""
import math
nd=input("请输入小岛数量n和雷达半径d:").split(' ')
nd = list(map(int, nd))
n=nd[0]
d=nd[1]
#每个小岛对应雷达的范围(是一个线段,left=s[i][0] ,right=s[i][1] )
#不要使用这个定义列表(s=[[0,0]]*n) ,因为使用这种,后面对其赋值时,会使得每行都一样
s=[[0 for col in range(2)] for row in range(n)]
#输入每个小岛的坐标(x,y)
xy=[[0,0]]*n
flag=1
for i in range(n):xy[i]=input("请输入第"+str(i+1)+"个小岛的坐标:").split(' ')xy[i]=list(map(int,xy[i]))def solve():global sans=1s=sorted(s)   #按左端点从小到大排列now=s[0][1]for i in range(n):if s[i][0]<=now:now=min(now,s[i][1])else:ans+=1now=s[i][1]return ansfor i in range(n):if xy[i][1]>d:flag=0else:s[i][0]=xy[i][0]-(math.sqrt(d*d-xy[i][1]*xy[i][1]))s[i][1]=xy[i][0]+(math.sqrt(d*d-xy[i][1]*xy[i][1]))
if flag:print("雷达数最少为:",solve())
else:print("无解")

1.4 结果显示

二、誊抄书籍(二分算法+贪心算法+递归算法)

2.1 问题描述

2.2 问题分析

2.3 程序代码

# -*- coding: utf-8 -*-
"""
Created on Tue Mar 20 18:11:58 2018@author: lizihua
"""
mk=input("请输入书的数量m和抄写员的数量k:").split(' ')
mk = list(map(int, mk))
m=mk[0]
k=mk[1]
result=[]    #结果存入result
#输入每本书的页数
a=input("请输入m本书的页数:").split(' ')
a=list(map(int,a))#判断最大堆的页数小于等于ans是否可行
def check(ans):s=0now=0#从后往前判断每本书,若可以则放入当前堆for i in range(m-1,-1,-1):if now+a[i]>ans:s+=1now=a[i]else:now+=a[i]if now>0:s+=1#判断最后总堆数是否小于等于kif s>k:return 0else:return 1#用递归方式输出最后结果
#当前处理到第book本书,第scriber堆,当前堆的页数是now,每堆页数不超过ans
def printing(book,ans,scriber,now):if book<0:return
#当前书不能加入当前堆,则需要添加分隔符if book==(scriber-1) or now+a[book]>ans:
#由于check函数是倒着检验的,因此输出正常是倒着的,利用list的insert函数,使其正着输出result.insert(0,'/')result.insert(0,str(a[book]))        printing(book-1,ans,scriber-1,a[book])else:result.insert(0,str(a[book]))printing(book-1,ans,scriber,now+a[book]) #二分查找搜索范围,最大值r是所有书的总页数,最小值l是页数最多那本书的页数
l=max(a)
r=sum(a)
while l<=r:mid=(l+r)/2if check(mid):r=mid-1else:l=mid+1
printing(m-1,l,k-1,0)
print(result)

2.4结果显示

算法基础之python实现贪心算法中的雷达安装问题和二分法中誊抄书籍问题相关推荐

  1. 算法基础--优惠券问题(贪心算法)

    算法基础–优惠券问题(贪心算法) 近期某商场由于周年庆,开启了"0元购"活动.活动中,消费者可以通过组合手中的代金券,实现0元购买指定商品. 聪明的小团想要用算法来帮助他快速计算: ...

  2. 算法基础(Java)--贪心算法

    前言 前面简单的介绍了八大经典排序算法,此文将要介绍贪心算法,并介绍一些常见贪心算法题目. 1. 贪心算法的概念 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最 ...

  3. (Java)算法基础6:图/贪心算法(带模板上考场,模板一定滚瓜烂熟解决考场订制)

    图由点集和边集构成. 有向图有箭头如下下图,无向图无箭头如下图 邻接表,如下图,记录ABCD的直接邻居. 这种结构可以表达所有图,比如有权值的图,如下下图 邻接矩阵法:用一个矩阵来表达上图(有向图,无 ...

  4. 八十二、Python | Leetcode贪心算法系列

    @Author:Runsen @Date:2020/7/5 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  5. python leetcode_八十二、Python | Leetcode贪心算法系列

    @Author:Runsen @Date:2020/7/5 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  6. leetcode 455 分发饼干(c++和python) 贪心算法

    目录 1 贪心算法: 2 题目描述 3 解题思路 4 c++ 5 python 1 贪心算法: 保证每次局部操作是最优解,从而是最终得到的结果是全局最优解. 2 题目描述 有一群孩子和一堆饼干,每个孩 ...

  7. python 实现贪心算法

    文章目录 贪心算法 一. 算法概述 1. 简介 2. 基本步骤 二. 基本实现 1. 实例 2. 分析步骤 3. 代码实现 三. 数模实战 1. 题目展示 2. 题目分析 2.1 公式 2.2 实现 ...

  8. 数据结构与算法学习⑤(BFS和DFS 贪心算法 二分查找)

    数据结构与算法学习⑤ 数据结构与算法学习⑤ 1.BFS和DFS 1.1.深度优先搜索算法 1.2.广度优先搜索算法 面试实战 102. 二叉树的层序遍历 104. 二叉树的最大深度 515. 在每个树 ...

  9. 算法学习笔记22:贪心算法

    目录 贪心算法:如何用贪心算法实现Huffman压缩编码 如何理解"贪心算法" 贪心算法实战分析 1.分糖果 2. 钱币找零 3. 区间覆盖 解答开篇 内容小结 贪心算法:如何用贪 ...

最新文章

  1. 【杂谈】为什么你在有三AI看不到最新论文的解读,其实一直都有的
  2. BZOJ 2038: [2009国家集训队]小Z的袜子(莫队算法例题)
  3. TCP之三次握手和四次挥手过程
  4. matlab画坐标系,Matlab绘制图形坐标轴操作汇总 | 望天博客
  5. 杭电1963 完全背包
  6. 财务报表越做越丑?这些秒杀Excel的可视化工具,人人都能用
  7. Linux之time命令
  8. 【python】Tkinter可视化窗口(一)
  9. 中望3d快捷键命令大全_cad快捷键命令大全
  10. 【数学建模常用模型】分类专题
  11. XML的写入_dom4j添加、删除、修改Xml文件内容
  12. [Python趣味应用]总有人想偷看你电脑?留下证据后办他~~
  13. 2016年趋势科技夏令营面试题目
  14. 记录一次 JS 解密去混淆的经历 -- 如何破解加密的 JS 代码(一)
  15. 支付分账的体系包含哪些?
  16. 【原创整理】软件测试自我记录(目前携程+招银网络科技)
  17. 程序员除了代码还应该有什么
  18. 电子书下载:Adobe PDF 文档格式开发参考 PDF Reference 1.7
  19. 适合平板用的Android版本,安卓平板专享 推荐五款Pad版应用浏览器
  20. STM32F1与STM32CubeIDE编程实例-磁簧开关(Reed Switch)驱动

热门文章

  1. 从一般管理原则看微软的重组
  2. 【C#】获取程序中Properties下的AssemblyInfo.cs下的信息
  3. 状态机——简单自动售卖机的实现
  4. PyQt5实例 画板小程序
  5. 错误:无效参数:could not find capabilities for arch=aarch64
  6. oracle查看和修改字符集,oracle字符集的查看和修改
  7. 微信登录界面安卓代码_安卓模拟器微信登录闪退,转圈,停止运行解决方法
  8. Linux安全扫描概述
  9. 你有被世界杯期间“脑残式广告”洗脑吗?
  10. Spring Boot Vue Element入门实战(四)主页面开发