现有16枚外形相同的硬币,其中有一枚比真币的重量轻的假币,若采用分治法找出这枚假币,至少比较( )次才能够找出该假币。A.3B.4C.5D.6

题目

现有16枚外形相同的硬币,其中有一枚比真币的重量轻的假币,若采用分治法找出这枚假币,至少比较( )次才能够找出该假币。

A.3

B.4

C.5

D.6


相似考题

3.阅读下列说明和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代码】下面是算法的C语言实现,其中: coins[]: 硬币数组first,last:当前考虑的硬币数组中的第一个和最后一个下标 #include int getCounterfeitCoin(int coins[], int first,int last){int firstSum = 0,lastSum = 0;int ì;If(first==last-1){ /*只剩两枚硬币*/if(coins[first] if((last - first + 1) % 2 ==0){ /*偶数枚硬币*/for(i = first;i lastSum){return getCounterfeitCoin(coins,first+(last-first)/2-1,last);}else{Return( 3 )}}} 【问题一】(6分)根据题干说明,填充C代码中的空(1)-(3)【问题二】(4分)根据题干说明和C代码,算法采用了( )设计策略。函数getCounterfeitCoin的时间复杂度为( )(用O表示)。【问题三】(5分)若输入的硬币数为30,则最少的比较次数为( ),最多的比较次数为( )。

更多“现有16枚外形相同的硬币,其中有一枚比真币的重量轻的假币,若采用分治法找出这枚假币,至少比较() ”相关问题
  • 第1题:

    阅读下列说明和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枚硬币是假币。




    【问题一】(6分)
    根据题干说明,填充C代码中的空(1)-(3)
    【问题二】(4分)
    根据题干说明和C代码,算法采用了( ??)设计策略。
    【问题三】(4分)
    若输入的硬币数为30,则最少的比较次数为( ?),最多的比较次数为( ??)。


    答案:
    解析:
    【问题一】(6分)
    (1)first+(last-first)/2 或(first+last)/2
    (2)firstSum(3)first+(last-first)/2 或(first+last)/2

    【问题二】(4分)
    分治法、O(nlogn)

    【问题三】(4分)
    2、4

  • 第2题:

    现有n枚外观相同的硬币和一架天平,已知硬币中有一枚重量较轻的硬币是假币,要求设计一个高效的算法来检测出这枚假币。请写出分治法求解该问题的详细步骤,并分析其时间复杂性。


    B 解析:用分治法找假币的过程为:先将16枚硬币对等分为2堆(各8枚)并比较其重量,假币在较轻的那一堆中;然后将8枚硬币对等分为2堆(各4枚)并比较其重量,假币在较轻的那一堆中;再将4枚硬币对等分为2堆(各2枚)并比较其重量,假币在较轻的那一堆中;最后比较两个硬币的重量,找出假币。因此,至少比较4次才能够找出该假币。

  • 第3题:

    设有2020个大小相同的金币,其中有一枚为假币,假币比真币轻。通过天平称量的方法来检测,问至少必须称()次?

    A.11

    B.7

    C.10

    D.8


    ABCD

  • 第4题:

    设有15个大小相同的金币,其中有一枚为假币,只知道假币的重量与真币不同。通过天平称量的方法来检测,问至少必须称()次?

    A.3

    B.4

    C.5

    D.1


    4

  • 第5题:

    6、有12枚一模一样的硬币,现在需要用一个天平把假币从这12枚硬币中找出来,问下列说法哪个是正确的。

    A.只要假币与真币相比重量不一样,且已知其中只有一枚是假币,就可以求解。

    B.只要已知假币与真币相比重量不一样,就可以求解。

    C.只要已知其中只有一枚是假币,就可以求解。

    D.在已知其中只有一枚是假币的情况下,如果已知假币与真币重量不一样,但是不知道假币是轻还是重,那么是绝对不可能只称三次就找出假币的。


    只要假币与真币相比重量不一样,且已知其中 只有一枚是假币, 就可以求解。