文章目录

  • 前引闲聊
  • 原题题目
  • 代码实现(分治法 真的麻了)
  • 代码实现(一次遍历)
  • 提交结果

前引闲聊


我说实话 这道题真的好无聊好无聊好无聊
我就这样说嘛 这道题有好蠢
我们只需要一次遍历 就是如果数组中数全部相同 那么就说明
没有假硬币
但是如果有一个数不相同 那么那个位置的硬币就是假的
一个一次遍历的问题 非要用分治法
但是我们用分治法的思想还是通过不断的 重复的计算区间的总重量
这样子也就会导致多次的重复计算

分治法既没有使编程简单
也没有使时间复杂度降低
那我用分治法干什么

(补)
最气人的是什么
是题目的不完整性和 什么都不知道干嘛的无措
首先没有给出输入的格式
并且输出的格式也没有给
全部都是我用一个文件试
然后看错误示例 这样子试出来的
太睿智了(无奈╮(╯▽╰)╭)


原题题目



代码实现(分治法 真的麻了)


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. 分治法找假币 ----(第八次作业)相关推荐

  1. python分治算法_分治法及其python实现例子

    在前面的排序算法学习中,归并排序和快速排序就是用的分治法,分治法作为三大算法之一的,有非常多的应用例子. 分治法概念 将一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题-- ...

  2. 分治法-----找最大值与最小值

    在20级新生刷题组中我遇到了用分治法求最大值与最小值的算法题,初看一脸懵,深入 初步的了解中突然发现跟二分法(一次划分)有着惊人的相似,好吧qaq,其实二分法就是属于分治法的一种. 首先,分治法顾名思 ...

  3. c语言分治算法求最大值,分治法找最大值(C語言)

    根據分治思路找最大值: #include int max(int a,int b){ if (a >= b) return a; else return b; } int find_max(in ...

  4. python刷题技巧_【python刷题】分治法

    归并排序 def merge(le, ri): res = [] i = j = 0 while i < len(le) and j < len(ri): if le[i] < ri ...

  5. 找假币问题-2分法 VS 3分法

    分治算法-找假币问题-2分法VS3分法 找假币问题-2分法 VS 3分法 问题:有k枚硬币,其中有一枚假币,假币与真币无外观差异,只是假币的重量稍微大一些.现有一个无砝码称重天平,通过称重的方式找出假 ...

  6. aes算法实现c语言_以C语言实现归并排序为例,谈谈五大常用算法之一的“分治法”...

    分治算法,顾名思义就是"分而治之",即把规模较大的复杂问题拆分为若干规模较小的类似子问题,并逐个解决,最后再将各个子问题的解决结果合并,得到原始问题的结果的方法.这个技巧是很多高效 ...

  7. 算法设计——用分治法查找数组元素的最大值和最小值、用分治法实现合并排序、最小费用问题、树的最大连通分支问题(代码实现)

    代码链接:pan.baidu.com/s/15inIth8Vl89R1CgQ_wYc2g  提取码:gf13 算法分析与设计第 1 次实验 时间 2020.3.31 地点 软件大楼 127 实验名称 ...

  8. 用分治法设计一个算法,在数组A中寻找最大元素和最小元素 Java代码

    算法分析与设计作业-- 用分治法设计一个算法,在数组A中寻找最大元素和最小元素 public class b1113 {static int min=Integer.MAX_VALUE;static ...

  9. 分治法求解大整数乘法

    算法导论课作业:分治法求解大整数乘法 – 学号:20204227058 求解思想 ​ 实现大整数乘法的方法有许多种,其中我们最简单的方法就是小学里面教的竖式算法,这种方法在计算过程中数AAA需要和数B ...

最新文章

  1. Thinkphp5 开发 OA 办公系统 - 数据库设计
  2. Another ORA-00600 internal error
  3. rocksdb学习笔记
  4. Python架构(一)
  5. 数据库视频(三)——总结篇
  6. 跟本菜菜一起去体验Microsoft Windows Server Code Name Longhorn Server Core
  7. linux误删ssh不上,误删openssh-server删除,复原操作
  8. 友声电子秤设置软件_友声电子秤说明书/操作指南?(一)
  9. CentOS离线安装gcc环境(附安装包+图文并茂)
  10. Win11如何开启旧版组件 Win11开启旧版组件的方法
  11. QT 网络编程(1)
  12. win7旗舰版系统如何重装系统win10
  13. mysql数据库基操,都坐下!
  14. OpenGL(一)二维图形的绘制:一个简单的绘制矩形程序
  15. vs2013编译驱动错误-Inf2Cat,signability test failed
  16. JavaScript库资源
  17. 电影特效合成软件:The Foundry Nuke 11 for Mac
  18. 通信协议 - ARINC615A加卸载协议
  19. Ubuntu 20.04上编译OpenSSL的编译选项设置
  20. 创建Cocos2dx项目两种方法

热门文章

  1. mesh和wifi中继的区别_Mesh路由和无线中继的差距在哪里?谁才是更好的选择?
  2. ERR_REQUIRE_ESM
  3. 【技术科普】区块链世界也存在多元宇宙
  4. 如何使用Socks5代理IP加密Windows网络数据传输
  5. 参加中国移动开发者大会有感
  6. js 字符串转化成数字
  7. 3.1 SQL是什么?它能做什么
  8. 大数据下的用户行为分析
  9. 技术管理者对知识组织的认识
  10. 为什么数据库表名需要表前缀