贪心问题(Python代码实现)——磁带最优存储问题
文章目录
- 磁带最优存储问题
- 贪心策略
- 问题模型
- python实现代码
- Python知识小结
- 关于Python sort
- sort()与sorted()的区别
今早任务——贪心算法,Python代码实现算法课的作业。
磁带最优存储问题
设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是Li, 1≤i≤n。这n 个程序的读取概率分别是p1,p2,…,pn,且p1+p2+…+pn = 1。如果将这n 个程序按 1,2,…,n 的次序存放,则读取程序i所需的时间tr=c*(P1×L1+P2×L2+…+Pr×Lr)。这n 个程序的平均读取时间为 t1+t2+…+tn。实际上第k个程序的读取概率为ak/(a1+a2+…+an)。对所有输入均假定c=1。磁带最优存储问题要求确定这n个程序在磁带上的一个存储次序,使平均读取时间达到最小。试设计一个解此问题的算法,并分析算法的正确性和计算复杂性。
要求:先写出贪心策略,问题建模,Python编写代码,测试数据,测试结果。
贪心策略
每个程序的读取时间都应该找最短
问题模型
- 计算每个程序的长度和读取概率的乘积。
- 对1.产生的结果进行排序。
- 当访问次序确定时,求出每个程序的访问时间。
- 求出n个程序的平均读取时间。
输入:
第一行一个整数 n
每行有两个整数ai,bi分别表示程序存放在磁带上的长度和读取概率。
输出:
一个结果 表示计算出的最小平均读取时间。
python实现代码
def Sort(a):ans=Trueflag=len(a)-1while flag>0 and ans:ans=Falsefor i in range(flag):if a[i]>a[i+1]:ans=Truetemp=a[i]a[i]=a[i+1]a[i+1]=tempflag-=1
def greed():for i in range(n):# print(i)t[i]=a[i]*b[i]
# print(t[i])Sort(t)
# for i in range(n):
# print(t[i])for i in range(1,n):t[i]+=t[i-1]# print(t[i-1])to=int(0)tp=float(0.0)for i in range(n):to+=t[i]tp+=b[i]
# print(to)# print(tp)w=float(to)/tpprint(w)
# def main():
# if __name__=="__main__":
n= int(input())
i=int(0)
w=float(0.0)
t=[0]*n#
a=[0]*n#
b=[0]*n#
for i in range(n):a[i],b[i]=map(int,input().split(' '))
greed()
# print(a)
# print(b)
#6
#72 873
#46 462
#9 275
#73 122
#35 84
#23 21
#86.61458900381056
Python知识小结
回顾Python的知识
列表
- 清空是 t=[0]*n
- for i in range(1,n):# 从1开始,到n-1 左闭右开
- a[i],b[i]=map(int,input().split(’ '))//列表输入 两个列表一起 就是 2 4 这个格式的输入
- a=a = list(map(int, input().split(’ '))) # 单个列表的输入
关于Python sort
- list .sort(reverse=True) 降序 排序
- 初始为升序排序 list.sort()
sort()与sorted()的区别
- 就是sorted() 函数也不会改变所传入的可迭代对象,该函数只是返回一个新的、排序好的列表。
>>> x =[4, 6, 2, 1, 7, 9]
>>> y = sorted(x)
>>> print (y)
[1, 2, 4, 6, 7, 9]
>>> print (x )
[4, 6, 2, 1, 7, 9]
- sorted() 函数时,传入一个 reverse 参数,如果将该参数设置为 True,则表示反向排序
>>> sorted(a, reverse = True)
[90, 30, 20, 3.6, 3.5, -1.2]
- 调用 sorted() 函数时,还可传入一个 key 参数,该参数可指定一个函数来生成排序的关键值
>>> b = ['fkit', 'crazyit', 'charlie', 'fox', 'Emily']
>>> sorted(b, key = len)
['fox', 'fkit', 'Emily', 'crazyit', 'charlie']
贪心问题(Python代码实现)——磁带最优存储问题相关推荐
- 贪心算法-磁带最优存储问题
贪心算法通常是对某一值进行排序,然后再采取贪心策略进行求解.此问题贪心角度不同以往,它是对两因素进行综合处理.将它们的乘积进行排序. 题意:设有n 个程序{1,2,-, n }要存放在长度为L的磁带上 ...
- 贪心:磁带最优存储与磁盘文件最优存储
1.磁带最优存储问题 Input: 5 71 872 46 452 9 265 73 120 35 87 Output: 85.6193 Code: #include <bits/stdc++. ...
- 算法设计与分析: 4-3 磁带最优存储问题
4-3 磁带最优存储问题 问题描述 设有 n 个程序{1,2,...,n}{1,2,...,n}\{1,2,..., n\}要存放在长度为 L 的磁带上.程序 i 存放在磁带上的长度是 lilil_i ...
- 磁盘最优存储与磁带最优存储问题
磁带最优存储 题目描述 设有n 个程序{1,2,-, n }要存放在长度为L的磁带上.程序i存放在磁带上的长度是Li, 1<= i<= n.这n 个程序的读取概率分别是p1,p2,-,pn ...
- 磁带最优存储问题java实现_磁带的最优存储问题(贪心选择)
算法设计 n个程序的平均读取时间:(贪心策略) 在该题目中,要考虑综合因素:长度和读取概率.要求n个程序的平均读取时间最短.按照贪心策略,则每个程序的读取时间都应该最短.故: (1)计算每个程序的长度 ...
- 算法复习之磁带最优储存问题
题目描述 设有n 个程序{1,2,-, n }要存放在长度为L的磁带上.程序i存放在磁带上的长度是Li, 1<= i<= n.这n 个程序的读取概率分别是p1,p2,-,pn,且pi+p2 ...
- 磁盘最优存储问题【贪心算法】
题目描述 设有n 个程序{1,2,-, n }要存放在长度为L的磁带上.程序i存放在磁带上的长度是Li, 1<= i<= n.这n 个程序的读取概率分别是p1,p2,...,pn,且pi+ ...
- 磁盘最优存储问题---Python
题目描述 设有n 个程序{1,2,-, n }要存放在长度为L的磁带上.程序i存放在磁带上的长度是Li, 1<= i<= n.这n 个程序的读取概率分别是p1,p2,-,pn,且pi+p2 ...
- XGBoost参数调优完全指南(附Python代码)
XGBoost参数调优完全指南(附Python代码) 译注:文内提供的代码和运行结果有一定差异,可以从这里下载完整代码对照参考.另外,我自己跟着教程做的时候,发现我的库无法解析字符串类型的特征,所以只 ...
最新文章
- is this mysql server_远程连接MySQL数据库报错:is not allowed to connect to this MYSQL server的解决办法...
- MasterPage技术
- word文档插入行号
- rust(43)-rust语言特点与版本发布
- VTK:PolyData之FitSplineToCutterOutput
- Redis源码剖析(十)简单动态字符串sds
- html如何制作滑块,网页制作html5实现滑块功能之type=quot;rangequot;属性-建站-建站教程-建站方法-米云建站 - 米云问答...
- 【Express】—Express路由请求
- SSH远程管理、参数讲解、xshell使用、scp,sftp,ssh命令(ssh两种方式的密钥验证方...
- Kaggle泰坦尼克号幸存者预测
- 如何向Oracle数据库中插入带有特殊符号“”的数据
- Java现在好找工作吗?
- 我在公司彻夜撸码,老板天天开X6夜店蹦迪,到头来工资还拖欠
- 【转载】 身份证号码校验(15位和18位都可以)
- OpenCV实战——基于GrabCut算法的图像分割
- flash---星星闪
- 从滚动条到画布的几个代码文件——Python学习笔记之十七
- 各大股票开放接口介绍
- python爬取糗事百科超搞笑图片
- jaeger php,全链路监控Jaeger搭建实战
热门文章
- 求子集PHP,JavaScript求非空子集数目的实现方法
- 蒲公英 · 积跬步以至千里
- 技术分享1: jinkens构建Android工程,并上传到蒲公英平台
- 微信小程序业务好(做)跑吗?我想做小程序代理业务
- Python人脸识别图片视频
- 【编译原理】Python实现对一个英文文本的词频统计
- 用计算机排序excel,【用excel名字排序的方法有哪些?这些简便的计算机技能你一定需要】- 环球网校...
- c语言 最长单词,c语言求最长公共单词
- 找字符串中最长单词C语言,C语言 在已知字符串中找最长单词
- C++实践 极简版本贪吃蛇小游戏