阅读下列说明和 C 代码,回答问题1至问题 3 ,将解答写在对应栏内。【说明】

题库2022-08-02  38

问题 阅读下列说明和 C 代码,回答问题1至问题 3  ,将解答写在对应栏内。【说明】假币问题:有 n 枚硬币,其中有一枚是假币,己知假币的重量较轻。现只有一个天平,要求用尽量少的比较次数找出这枚假币。【分析问题】       将 n 枚硬币分成相等的两部分  :      (1) 当  n  为偶数时,将前后两部分,即   1...n/2  和  n/2+1...0  ,放在天平的两端,较轻的一端里有假币,继续在较轻的这部分硬币中用同样的方法找出假币  :      (2) 当  n  为奇数时,将前后两部分,即  1..(n -1)/2  和  (n+1)/2+1...0  ,放在天平的两端,较轻的一端里有假币,继续在较轻的这部分硬币中用同样的方法找出假币;若两端重量相等,则中间的硬币,即第   (n+1)/2  枚硬币是假币。【问题一】 根据题干说明,填充 C 代码中的空(  1  )  -  (  3  )【问题二】根据题干说明和 C 代码,算法采用了(   )设计策略。【问题三】若输入的硬币数为 30 ,则最少的比较次数为(  ),最多的比较次数为(   )。

选项

答案

解析 【问题一】( 1 )  first+(last-first)/2+1   或  (first+last)/2+1 ( 2 )  firstSum大于lastSum( 3 )first+(last-first)/2   或  (first+last)/2【问题二】分治法、O (  nlogn  ) 【问题三】2  、  4
转载请注明原文地址:https://tihaiku.com/congyezige/2408442.html

最新回复(0)