from math import sqrtdef numSquares(n):if n <= 0:return 0legal_nums = [e**2 for e in range(1, int(sqrt(n)) + 1)]layers = 0current_queue = {n}while current_queue:layers+=1next_queue = set()for elem in current_queue:for legal_num in legal_nums:if elem == legal_num:return layerselif elem<legal_num:breakelse:next_queue.add(elem-legal_num)current_queue = next_queuereturn layersdef main():n = 12# print(numSquares(0))print(numSquares(7168))print(numSquares(n))if __name__ == "__main__":main()
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。