算法设计与分析-HomeWork
ex1(p20)
代码如下:
import random def Darts(n):
k=0
i=1
while i<=n:
x=random.uniform(0,1)
#y=random.uniform(0,1)
y=x
if(x**2+y**2<=1):
k+=1
i+=1
return 4*k/n print(Darts(10000000))
print(Darts(100000000))
print(Darts(100000000))
结果如下:
物理意义:计算2*sqrt(2) #如果结果输出的是2*k/n,则计算的是无理数sqrt(2)的近似值
ex2(p23)
代码如下:
import random
import math def F(x):
return math.sqrt(1-x**2) def CalPI(n):
k=0
i=1
while i<=n:
i+=1
x=random.uniform(0,1)
y=random.uniform(0,1)
if (y<=F(x)):
k+=1
return 4*k/n print("when n=10000000,PI=%.10f"%CalPI(10000000))
print("when n=100000000,PI=%.10f"%CalPI(100000000))
print("when n=1000000000,PI=%.10f"%CalPI(1000000000))
结果如下:
ex3(p23)
代码如下:
import random
import math def F(x):
return x-1 def CalCalculus(a,b,c,d,n,function):
k_positive=0
k_negtive=0
i=1
while i<=n:
i+=1
x=random.uniform(a,b)
y=random.uniform(c,d)
if (y>=0 and y<=function(x)):
k_positive+=1
elif(y<0 and y>function(x)):
k_negtive+=1
return (b-a)*(d-c)*(k_positive-k_negtive)/n if __name__=="__main__":
function=F
str=input("please input a,b,c,d:");
ceof=list(str.split(" "))
ceof=[int(i) for i in ceof]
print(ceof)
print("when n=1000000,res=%.10f"%CalCalculus(ceof[0],ceof[1],ceof[2],ceof[3],1000000,function))
print("when n=10000000,res=%.10f"%CalCalculus(ceof[0],ceof[1],ceof[2],ceof[3],10000000,function))
print("when n=100000000,res=%.10f"%CalCalculus(ceof[0],ceof[1],ceof[2],ceof[3],100000000,function))
结果如下:
p24 Ex4
ex4(p36)
代码如下:
# -*- coding: utf-8 -*-
"""
__title__ = ''
__author__ = 'jing'
__mtime__ = '2017/9/20'
# code is far away from bugs with the god animal protecting
I love animals. They taste delicious.
┏┓ ┏┓
┏┛┻━━━┛┻┓
┃ ☃ ┃
┃ ┳┛ ┗┳ ┃
┃ ┻ ┃
┗━┓ ┏━┛
┃ ┗━━━┓
┃ 神兽保佑 ┣┓
┃ 永无BUG! ┏┛
┗┓┓┏━┳┓┏┛
┃┫┫ ┃┫┫
┗┻┛ ┗┻┛
"""
import random
import math def CalSetCount(setN):
setTemp=set()
k=0
a=random.choice(setN)
while a not in setTemp:
k+=1
setTemp.add(a)
a = random.choice(setN)
return k if __name__=="__main__":
n=int(input("please enter n(the numbers of set):"))
while n!=0:
setN=range(0,n)
i=0
kList=[]
while i<1000:
i+=1
kList.append(CalSetCount(setN))
print("The estimated value of n is %.f"%(2.0*((sum(kList)/1000)**2)/math.pi))
n = int(input("please enter n(the numbers of set):"))
结果如下:
随着n值的增大,误差存在着波动性,但整体趋势是越来越小的
p54
p64 ex
import random count=1 def Search(val,ptr,x,i):
global count
count=1
while x>val[i]:
i=ptr[i]
count=count+1
return i def A(val,ptr,x,head):
return Search(val,ptr,x,head) def B(val,ptr,x,head):
i=head
max=val[i]
for j in range(4):
y=val[j]
if max<y and y<=x:
i=j
max=y
return Search(val,ptr,x,i) def C(val,ptr,x,head):
i=head
max=val[i]
for k in range(4):
j=random.randint(0,15)
y=val[j]
if max<y and y<=x:
i=j
max=y
return Search(val,ptr,x,i) def D(val,ptr,x,head):
i=random.randint(0,15)
y=val[i]
if x<y:
return Search(val,ptr,x,head)
elif x>y:
return Search(val,ptr,x,ptr[i])
else:
return i val=[5,7,3,0,4,11,17,14,9,20,21,25,23,30,34,31]
ptr=[1,8,4,2,0,7,9,6,5,10,12,13,11,15,-1,14] #the maxnum's index equats to -1 head=3
x=11
print("C:x=11's position is %d.Compared %d times\n"%(C(val,ptr,x,head),4+count))
print("A:x=11's position is %d.Compared %d times\n"%(A(val,ptr,x,head),count))
print("B:x=11's position is %d.Compared %d times\n"%(B(val,ptr,x,head),4+count))
print("D:x=11's position is %d.Compared %d times\n"%(A(val,ptr,x,head),count)) x=30
print("C:x=30's position is %d.Compared %d times\n"%(C(val,ptr,x,head),4+count))
print("A:x=30's position is %d.Compared %d times\n"%(A(val,ptr,x,head),count))
print("B:x=30's position is %d.Compared %d times\n"%(B(val,ptr,x,head),4+count))
print("D:x=30's position is %d.Compared %d times\n"%(A(val,ptr,x,head),count))
算法设计与分析-HomeWork的更多相关文章
- 【技术文档】《算法设计与分析导论》R.C.T.Lee等·第7章 动态规划
由于种种原因(看这一章间隔的时间太长,弄不清动态规划.分治.递归是什么关系),导致这章内容看了三遍才基本看懂动态规划是什么.动态规划适合解决可分阶段的组合优化问题,但它又不同于贪心算法,动态规划所解决 ...
- 算法设计与分析 - AC 题目 - 第 5 弹(重复第 2 弹)
PTA-算法设计与分析-AC原题 - 最大子列和问题 (20分) 给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+, ..., Nj },其中 ≤i ...
- 算法设计与分析 - AC 题目 - 第 2 弹
PTA-算法设计与分析-AC原题7-1 最大子列和问题 (20分)给定K个整数组成的序列{ N1, N2, ..., NK },“连续子列”被定义为{ Ni, Ni+1, ..., Nj },其中 1 ...
- 算法设计与分析-Week12
题目描述 You are given coins of different denominations and a total amount of money amount. Write a func ...
- 南大算法设计与分析课程复习笔记(1) L1 - Model of computation
一.计算模型 1.1 定义: 我们在思考和处理算法的时候是机器无关.实现语言无关的.所有的算法运行在一种“抽象的机器”之上,这就是计算模型. 1.2 种类 图灵机是最有名的计算模型,本课使用更简单更合 ...
- 算法设计与分析基础 (Anany Levitin 著)
第1章 绪论 1.1 什么是算法 1.2 算法问题求解基础 1.2.1 理解问题 1.2.2 了解计算设备的性能 1.2.3 在精确解法和近似解法之间做出选择 1.2.4 算法的设计技术 1.2.5 ...
- 算法设计与分析(李春保)练习题答案v1
1.1第1 章─概论 1.1.1练习题 1.下列关于算法的说法中正确的有(). Ⅰ.求解某一类问题的算法是唯一的 Ⅱ.算法必须在有限步操作之后停止 Ⅲ.算法的每一步操作必须是明确的,不能有歧义或含义模 ...
- 算法设计与分析 - 李春葆 - 第二版 - pdf->word v3
1.1 第1章─概论 练习题 . 下列关于算法的说法中正确的有( ). Ⅰ.求解某一类问题的算法是唯一的 Ⅱ.算法必须在有限步操作之后停止 Ⅲ.算法的每一步操作必须是明确的,不能有歧义或含义模糊 Ⅳ. ...
- 算法设计与分析 - 李春葆 - 第二版 - html v2
1 .1 第 1 章─概论 1.1.1 练习题 1 . 下列关于算法的说法中正确的有( ). Ⅰ Ⅱ Ⅲ Ⅳ .求解某一类问题的算法是唯一的 .算法必须在有限步操作之后停止 .算法 ...
随机推荐
- Codeforces 872C Maximum splitting:数学【分解成合数之和】
题目链接:http://codeforces.com/contest/872/problem/C 题意: 给你一个数n,问你最多能将n分解成多少个合数之和.(若不能分解,输出-1) 题解: 若要让合数 ...
- Jmeter-配置原件-HTTP Cookie管理器
线程组右键 -- 添加 -- 配置原件 -- HTTP Cookie管理器 如何定位到自己的cookie?以Google Chrome浏览器为例: 1.打开浏览器,打开开发者工具 2.登录站点 3 ...
- vs中解决方案、项目、类及ATL的理解
解决方案,是对所有要完成工作的统称,一般叫Solution. 项目,也叫工程,是将解决方案分成若干个模块进行处理,一般叫做Project.添加项目就是添加工程.解决方案是所有项目的总和. 一个项目里面 ...
- laravel 5.4 运行 make:auth 报错
Laravel 5.4 migrate时报错: Specified key was too long error 问题根源 MySQL支持的utf8编码最大字符长度为3字节,如果遇到4字节的宽字符就会 ...
- 集训Day4
在bzoj刷了好几天杂题感觉手感不是很好 继续回来集训一下 好几天没更新了啊... bzoj1875 一个无向图,一个人要从起始点走$t$步走到终点,不能沿着刚走过来那条边回去,问有多少种走法 $m ...
- Codeforces Round #394 (Div. 2) 题解
无需吟唱,直接传送 problem A 题目大意 已知有n个偶数,m个奇数,问这些数有没有可能组成一个严格递增1的序列 题解 判断abs(n,m) <= 1即可,注意n,m均为0的情况. Cod ...
- MongoDB4.0.0的安装配置—windows
一.背景 由于要学习MongoDB,所以就下载了最新的MongoDB 的Community Server版的4.0.0版本.可能是新的版本的缘故,在安装配置上与MongoDB3有许多不同,而且在3中的 ...
- SET_Matplotlib
fig.tight_layout() 调整子图间距 legend 图例分开显示
- JS加DOM理解
1. ***变量 2. ***数据类型 一. ***变量:内存中存储*一个*数据的存储空间,再起一个名字 何时使用:程序中反复使用的数据,都要先保存在变量中,再参与运算 如何使用:声明 赋值 ...
- windows64位 redis安装 步骤
官方下载:http://redis.io/download 可以根据需要下载不同版本 windows版:https://github.com/MSOpenTech/redis/releases 在D盘 ...