Longstick的学习周记——第十七周

本文介绍了分治算法的基本思想和操作步骤,通过详细解析如何利用分治策略解决找假币问题,展示了分治算法在实际问题中的高效解决方案。通过将100枚硬币分为3份进行递归称量,只需5次即可确定假币,对比传统方法大大减少了操作次数,体现了分治算法的优势。
摘要由CSDN通过智能技术生成

前言

不知道为什么这段时间特别怠惰,怀疑是可能没有弄清楚努力的方向,对很多事情处于消极逃避的状态,不能直面困难解决他,这样的生活过的特别累。。。提不起劲。


分治算法

1. 分治算法基本介绍

  分治算法即分而治之,就是把一个复杂的问题分解成两个或多个相同或相似的子问题,再把子问题分解成更小的问题。。。直到最后子问题可以简单地直接求解,原问题即子问题的合并。分治算法主要分为三个步骤:

  • 分解:将问题划分成一系列子问题,子问题的形式和原问题一样,只是规模更小
  • 解决:递归地求出子问题。如果子问题的规模足够小,即停止递归,直接求解
  • 合并:步骤将子问题的解组合成原问题的解

2. 分治算法通俗解释

(此例子引用连接如下:https://www.zhihu.com/search?type=content&q=%E5%88%86%E6%B2%BB%E7%AE%97%E6%B3%95)  

  有这样一个经典的问题:有100枚硬币,其中1枚重量与众不同,是假币,更轻一些。如果用天平秤,请问至少称多少次一定能找到这枚假币

  加入我们用传统的枚举法,显然至少需要比较50次

      

而假设我们采用分治法的话 ,流程如下:1. 将100硬币分成3份,33,33,34。

2.称量1、2份,若天平平衡,则假币必在另外34枚中。若不平衡,假币在轻的那33枚里。

3.将34枚分为11/11/12枚(或将33枚分成11*3)。

4.称量两组11枚的硬币,若平衡,假币在12枚里(或另外的11枚)若不平衡,假币在轻的11里。

5.将11(或12)枚分成3/4/4(或4/4/4),称量4/4,方法同上。

6.将剩下的3(或4)分为1/1/1(或1/1),称量1/1,若平衡,则剩下的一枚是假币,若不平衡,轻的是假币。 若还剩4枚,出现1/1平衡,剩下2枚则称量,显然轻的是假币。

这种方法只需要5次就能解决这个问题。

分治算法的流程:

具体参考:++中的分治算法及常见题目汇总 - Cucucu - 博客园 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值