Python 递归算法查找假硬币:代码示例和解析
from\ math\ import\ ceil\n\ndef\ findFalseCoin(coins,\ idxStart=0,\ iLength=None):\n\ if\ iLength\ is\ None:\n\ iLength\ =\ len(coins)\n\ \n\ if\ iLength\ ==\ 1:\n\ return\ idxStart\n\ \n\ n\ =\ ceil(iLength/3)\n\ wPart1\ =\ sum(coins[idxStart:idxStart+n])\n\ wPart2\ =\ sum(coins[idxStart+n:idxStart+2n])\n\ wPart3\ =\ sum(coins[idxStart+2n:idxStart+3*n])\n\ \n\ if\ wPart1\ <\ wPart2:\n\ return\ findFalseCoin(coins,\ idxStart,\ n)\n\ elif\ wPart1\ >\ wPart2:\n\ return\ findFalseCoin(coins,\ idxStart\ +\ n,\ n)\n\ else:\n\ return\ findFalseCoin(coins,\ idxStart\ +\ 2\ *\ n,\ n)\n\ \n\ if\ name\ ==\ 'main':\n\ coins\ =\ [100,100,100,100,100,100,100,100,100,100,100]\n\ for\ i\ in\ range(len(coins)):\n\ coinsCopy\ =\ coins[:]\n\ coinsCopy[i]\ =\ 99\n\ r\ =\ findFalseCoin(coinsCopy)\n\ print(f'False\ coin\ idx:{r},\ weight:{coinsCopy[r]}')
原文地址: https://www.cveoy.top/t/topic/pOoY 著作权归作者所有。请勿转载和采集!