1.为假币问题的三分算法写一段伪代码,确保该算法能处理所有的n值,而不仅仅是那些3的倍数。2、为假币问题的三分算法的城中次数建立一个递推关系,并在n=3的k次方的情况下对他求解3.当N值非常大时,该算法要比把硬币分成两堆的算法快多少倍
时间: 2024-06-01 07:12:35 浏览: 132
1. 伪代码:
function findFakeCoin(coins, start, end)
if end-start <= 2 then
if coins[start] < coins[start+1] then
return start
else
return start+1
end
end
third = (end-start)/3
if coins[start+third] == coins[start+2*third] then
return findFakeCoin(coins, start+2*third, end)
elseif coins[start+third] < coins[start+2*third] then
return findFakeCoin(coins, start, start+2*third)
else
return findFakeCoin(coins, start+third, start+2*third)
end
end
2. 递推关系:
let T(n) be the number of weighings for n coins
T(n) = T(n/3) + 1, if n > 2
T(2) = 1
T(1) = 0
3. 对于n=3的k次方的情况,有 T(n) = k
假币问题的三分算法在N值非常大时比把硬币分成两堆的算法快多少倍取决于具体实现和硬币数量的大小。在一些情况下,三分算法可能比把硬币分成两堆的算法更快,因为它能够更快地缩小搜索范围。但是,在硬币数量较少的情况下,把硬币分成两堆的算法可能更快,因为它比三分算法更简单。
阅读全文