阅读下列说明和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<lastSum (3)first+(last-first)/2 或(first+last)/2 【问题二】(4分) 分治法、O(nlogn) 【问题三】(4分) 2、4