2021/10/31296 浏览综合
最近在自学python,又换了语言编了个同样的解数独的代码,上次c++只需要0.2秒,python运算需要1.3秒左右,正在找原因中,,,,
TapTap
TapTap
TapTap
TapTap
TapTap
评论9
只看作者
最热
TapTap
写下你的想法...
24,24,4
Python本来就不是刷时间的,Python是解释性语言,本来就慢
风暴管束者
确实可以for自变量in数组名的方式来执行循环,计数的函数虽然编了但其实没有用到,slove函数的第二个参数在递归时就是正在解第几个数,如果是81就代表结束了
Black_Dog
其实楼主完全没必要把工程分为两个文件编写的,直接合并为一个文件。def下的为类方法,def外的直接看做类的主体,这样类的元素(如计算已经填写多少数字)可以直接在类方法中调用,例如加一个count,每次填写好一个参数就加一,回滚就减一。这时候就完全没必要再专门写一个计数函数去遍历庞大的数组了。
风暴管束者
估计是因为每次递归都传递了整个数独列表的实参,导致每次调用自己都会创建81个数字的列表,还有solve函数第二个参数为81以后,并没有结束递归,还接着递归把所有可能性都试完了,这样也导致耗时较长
Black_Dog
for循环的地方可以使用增强for直接循环数组(例如:for 变量名 in 数组名:print(i)),这样可以减少一点点数组再寻址的耗时。
但Python相对于C来说运行的确会慢很多,所以暴力遍历的算法可能在耗时上会差别巨大
嘟嘟
虽然我也不怎么懂,但是我知道C++比现在大多数语言更原始,很多语言其实都在原始的语言上变化出来的。C++可以看做基础语言。
慕容曦羽
看不懂,但感觉好厉害
Miss 礼
+1
ε٩千将 ۶ з
刚学Python的菜鸡留下了不争气的泪水😅
已经到底了
4
9