![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python算法思维
Meropidae
你的关注是我最大的动力
展开
-
Python-算法思维-4.2递归与分治1:数字三角形、最大子序列积
第1关:数字三角形中路径最小积本关任务:在数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字的乘积最小,路径上的每一步都只能往左下或右下走,只需求出最小的乘积,不需要给出具体路径。 2 3 8 1 2 2 4 7 1 4 8 5 2 6 5输入的第一行为数字三角形的层数,后面为数字三角形。n = eval(input())A=[]for i in range(n): X = A.append(list(map(int, input().split())))def Min原创 2022-01-07 19:52:00 · 1858 阅读 · 0 评论 -
Python-算法思维4.2 递归算法
第1关:递归求列表元素的和从键盘输入一个列表,元素为整数,调用递归函数sumLIst(L),求出列表L中所有元素的和,返回和,在主函数中输出。#二分查找def binary_search(A, x): ########## begin ########## # 请在此填写代码,找到x返回索引号,没找到返回-1 low,high=0,len(A)-1 while high>=low: mid=(high+low)//2 if A原创 2022-01-06 21:56:29 · 3602 阅读 · 1 评论 -
Python-算法思维-4.1二分法1:查找平方和
第1关:二分查找算法本关任务:编写一个实现二分算法的函数,能在一个已排序列表中快速搜索指定的数。#二分查找def binary_search(A, x): ########## begin ########## # 请在此填写代码,找到x返回索引号,没找到返回-1 low,high=0,len(A)-1 while high>=low: mid=(high+low)//2 if A[mid]==x: r原创 2022-01-05 15:20:13 · 3462 阅读 · 1 评论 -
Python-算法思维4.3.2 二分法求方程的根
第1关:给定方程给定单调上升区间方程的根函数f(x)=x2−10x+3在区间[8,12]单调上升且与x轴相交,求解该近似解,要求精度0.0001,即|f(x)|<=0.0001。def f(x): return x**2-10*x+3#Student Startdef findroot(a,b,eps): while abs(a-b)>0.00001: if f(a+0.000001)*f(b)<0: a+=0.0000原创 2022-01-04 16:30:14 · 6063 阅读 · 1 评论 -
Python-算法思维4.3.1 二分搜索
第1关:不重复序列二分搜索编写函数,函数功能是查找已排序的不重复数据列表A中的指定元素x,找到给出该数在列表中的下标,找不到输出-1。#Student startdef findx(A,x): high,low=len(A)-1,0 while high>=low: mid=(high+low)//2 if A[mid]==x: return mid elif A[mid]>x:原创 2021-12-30 11:48:29 · 2897 阅读 · 1 评论 -
Python算法-穷举法和二分法
第1关:百钱百鸡我国古代数学家张丘建在《算经》一书中提出的数学问题:鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?### 百钱百鸡 ###n=100c=0for i in range(0,int(n/5)): for j in range(0,int(n/3)): if i*5+j*3+int((n-j-i)/3)==n and (n-j-i)%3==0: c+=1 print('鸡翁的原创 2021-12-30 11:43:24 · 4297 阅读 · 0 评论 -
Python-算法思维4.0.1迭代算法
第1关:谷角猜想日本数学家谷角静夫在研究自然数时发现了一个奇怪现象:对于任意一个自然数 n ,若 n 为偶数,则将其除以 2 ;若 n 为奇数,则将其乘以 3 ,然后再加 1。如此经过有限次运算后,总可以得到自然数 1。人们把谷角静夫的这一发现叫做“谷角猜想”。编写一个程序,由键盘输入一个自然数 n ,把 n 经过有限次运算后,最终变成自然数 1 的全过程保存在列表中并打印出来。#Student Startn=int(input())ls=[n]while n>1: if原创 2021-12-30 11:26:56 · 4750 阅读 · 2 评论 -
Python-算法思维-4.4动态规划2:背包问题
第1关:01背包问题本关任务:有n种物品,它们有各自的体积和价值,现有背包容积为m,每种物品只能装入0次或1次( 所以称为01背包问题),如何让背包里装入的物品的价值总和最大,输出这个最大价值。要求使用递推方式完成本任务。编程要求输入的第一行为两个整数n和m,用空格隔开,n为物品种类,m为背包容量。 第二行为n种物品的体积,均为整数,用空格隔开。 第三行为n种物品的价值,均为整数,用空格隔开。根据提示,在右侧编辑器补充代码,计算并输出最大可能价值。n,m = map(int, in原创 2022-01-05 17:32:40 · 807 阅读 · 0 评论 -
Python-算法思维-4.4动态规划1:数字三角形
第1关:递归方式解决数字三角形问题本关任务:使用递归形式的动态规划(自顶向下),在数字三角形中寻找一条从顶部到底边的路径,使得路径上所经过的数字的乘积最小,路径上的每一步都只能往左下或右下走,只需求出最小的乘积,不需要给出具体路径。 2 3 8 1 2 2 4 7 1 4 8 5 2 6 5注意,必须使用动态规划表格,在测试输入中,有些输入的层数非常高,不使用动态规划会超时。n = eval(input())A=[]for i in range(n): X = A.append(l原创 2021-12-20 17:16:17 · 1312 阅读 · 0 评论 -
Python-算法思维-4.2递归与分治2:平面最小点对
第1关:平面最小点对本关任务:给定二维平面中n个点的坐标(整数),找出距离最近的2个坐标点之间的距离,n<=10000。import mathn = eval(input())A=[]for i in range(n): x,y= map(int, input().split()) A.append((x,y))def Distance(a, b): return math.sqrt((a[0]-b[0])**2+(a[1]-b[1])**2)#求[lo原创 2021-12-20 17:11:34 · 1079 阅读 · 0 评论