Python课后作业 2. 分治法找假币 ----(第八次作业)
文章目录
- 前引闲聊
- 原题题目
- 代码实现(分治法 真的麻了)
- 代码实现(一次遍历)
- 提交结果
前引闲聊
我说实话 这道题真的好无聊好无聊好无聊
我就这样说嘛 这道题有好蠢
我们只需要一次遍历 就是如果数组中数全部相同 那么就说明
没有假硬币
但是如果有一个数不相同 那么那个位置的硬币就是假的
一个一次遍历的问题 非要用分治法
但是我们用分治法的思想还是通过不断的 重复的计算区间的总重量
这样子也就会导致多次的重复计算
分治法既没有使编程简单
也没有使时间复杂度降低
那我用分治法干什么
(补)
最气人的是什么
是题目的不完整性和 什么都不知道干嘛的无措
首先没有给出输入的格式
并且输出的格式也没有给
全部都是我用一个文件试
然后看错误示例 这样子试出来的
太睿智了(无奈╮(╯▽╰)╭)
原题题目
代码实现(分治法 真的麻了)
def weightcal(coins,start,end):sum = 0for i in range(start,end+1):sum += coins[i]return sumdef findFalseCoin(coins,start,n):if(start == n):print("Fake coin:{}".format(start));returnif((n-start+1)%2 == 0):weight1 = weightcal(coins,start,n//2)weight2 = weightcal(coins,n//2+1,n)if(weight1 == weight2):print("Fake coin is not found");returnelif weight1<weight2:findFalseCoin(coins,start,n//2)else:findFalseCoin(coins,n//2+1,n)else:min = coins[start];flag = 0for i in range(start,n+1):if coins[i] < min:flag = 1min = ibreakelif coins[i] > min:flag = 1min = startbreakif flag == 1:print("Fake coin:{}".format(min))else:print("Fake coin is not found");returncoins = list(input().split(','))
coins = [int(i) for i in coins]
findFalseCoin(coins,0,len(coins)-1)
代码实现(一次遍历)
def findFalseCoin(coins,start,n):min = coins[start]flag = 0for i in range(start, n + 1):if coins[i] < min:flag = 1min = ibreakelif coins[i] > min:flag = 1min = startbreakif flag == 1: print("Fake coin:{}".format(min))else: print("Fake coin is not found");returncoins = list(input().split(','))
coins = [int(i) for i in coins]
findFalseCoin(coins,0,len(coins)-1)
提交结果
Python课后作业 2. 分治法找假币 ----(第八次作业)相关推荐
- python分治算法_分治法及其python实现例子
在前面的排序算法学习中,归并排序和快速排序就是用的分治法,分治法作为三大算法之一的,有非常多的应用例子. 分治法概念 将一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题-- ...
- 分治法-----找最大值与最小值
在20级新生刷题组中我遇到了用分治法求最大值与最小值的算法题,初看一脸懵,深入 初步的了解中突然发现跟二分法(一次划分)有着惊人的相似,好吧qaq,其实二分法就是属于分治法的一种. 首先,分治法顾名思 ...
- c语言分治算法求最大值,分治法找最大值(C語言)
根據分治思路找最大值: #include int max(int a,int b){ if (a >= b) return a; else return b; } int find_max(in ...
- python刷题技巧_【python刷题】分治法
归并排序 def merge(le, ri): res = [] i = j = 0 while i < len(le) and j < len(ri): if le[i] < ri ...
- 找假币问题-2分法 VS 3分法
分治算法-找假币问题-2分法VS3分法 找假币问题-2分法 VS 3分法 问题:有k枚硬币,其中有一枚假币,假币与真币无外观差异,只是假币的重量稍微大一些.现有一个无砝码称重天平,通过称重的方式找出假 ...
- aes算法实现c语言_以C语言实现归并排序为例,谈谈五大常用算法之一的“分治法”...
分治算法,顾名思义就是"分而治之",即把规模较大的复杂问题拆分为若干规模较小的类似子问题,并逐个解决,最后再将各个子问题的解决结果合并,得到原始问题的结果的方法.这个技巧是很多高效 ...
- 算法设计——用分治法查找数组元素的最大值和最小值、用分治法实现合并排序、最小费用问题、树的最大连通分支问题(代码实现)
代码链接:pan.baidu.com/s/15inIth8Vl89R1CgQ_wYc2g 提取码:gf13 算法分析与设计第 1 次实验 时间 2020.3.31 地点 软件大楼 127 实验名称 ...
- 用分治法设计一个算法,在数组A中寻找最大元素和最小元素 Java代码
算法分析与设计作业-- 用分治法设计一个算法,在数组A中寻找最大元素和最小元素 public class b1113 {static int min=Integer.MAX_VALUE;static ...
- 分治法求解大整数乘法
算法导论课作业:分治法求解大整数乘法 – 学号:20204227058 求解思想 实现大整数乘法的方法有许多种,其中我们最简单的方法就是小学里面教的竖式算法,这种方法在计算过程中数AAA需要和数B ...
最新文章
- Thinkphp5 开发 OA 办公系统 - 数据库设计
- Another ORA-00600 internal error
- rocksdb学习笔记
- Python架构(一)
- 数据库视频(三)——总结篇
- 跟本菜菜一起去体验Microsoft Windows Server Code Name Longhorn Server Core
- linux误删ssh不上,误删openssh-server删除,复原操作
- 友声电子秤设置软件_友声电子秤说明书/操作指南?(一)
- CentOS离线安装gcc环境(附安装包+图文并茂)
- Win11如何开启旧版组件 Win11开启旧版组件的方法
- QT 网络编程(1)
- win7旗舰版系统如何重装系统win10
- mysql数据库基操,都坐下!
- OpenGL(一)二维图形的绘制:一个简单的绘制矩形程序
- vs2013编译驱动错误-Inf2Cat,signability test failed
- JavaScript库资源
- 电影特效合成软件:The Foundry Nuke 11 for Mac
- 通信协议 - ARINC615A加卸载协议
- Ubuntu 20.04上编译OpenSSL的编译选项设置
- 创建Cocos2dx项目两种方法