隐隐的感觉到一些不对,我尝试添加对can_put函数做一个统计。理论上将,can_put函数的执行次数就是O(T)
CNT: 352, times: 72378 real 0m0.008suser 0m0.004ssys 0m0.000s CNT: 352, times: 1222703298 real 0m18.207suser 0m18.193ssys 0m0.004s CNT: 352, times: 459314 real 0m0.022suser 0m0.016ssys 0m0.000s
第一种是递归,除了耗栈,应该是足够的经济实惠
第二种是遍历,空间上很经济,时间上没有做任何考虑,是O(n^n)的,也就是最糟糕的
第三种是优化过的遍历,增加了剪枝(大概这个说法?),大幅度提高了效率,但是和递归相比,还是很糟糕,不知道是算法出了问题,还是为栈空间付出的代价?
等我干完手头的活儿,休息时拿出来玩玩看,总觉得第三钟算法不该这么费时间,哪里写错了吧。
时间: 2024-10-25 18:56:45