1樓:
defdet(m:
np.ndarray
)->float:n
=m.shape[0
]returnm[
0,0]
ifn==1
else
sum([(-1
)**i*
m[i,
0]*det(np
.block
([[m[:i
,1:]],[m
[(i+1
):,1:]]]))
fori
inrange(n
)])n=10
m=np.
random
.randn(n
,n)assert(np
.isclose
(det(m
),np
.linalg
.det(m)))
2樓:
逐個+1計算n!,不論啥時間複雜度都能像這樣寫:
long
long
factorial
(unsignedn)
3樓:
sleep n!秒
import
time
deffactorial(n
):returnn*
factorial(n
-1)if
n>1else
1def
algo(n
):time
.sleep
(factorial(n
))return
"pointless"
4樓:醬紫君
print("n!")
什麼, 你說這不是 O(n!) ?? 那你需要回爐重造...
乙個 的演算法
defpermutation
(_in
):if
len(
_in)==0
:return
iflen
(_in)==
1:return
[_in
]out=
fori
inrange
(len
(_in
)):m
=_in[i
]rem
=_in[:i
]+_in[i+
1:]forp
inpermutation
(rem
):out.([
m]+p
)return
outforpin
permutation
(list
('abc'
)):print(p)
5樓:
def dfs(x):
if(x==0): return
for i in range(0, x):
dfs(x-1)
顯然,時間複雜度 T(x) = x*T(x-1)
6樓:東雲研究所的貓
from
functools
import
reduce
bar=
lambdan:
reduce
(lambdax,
y:x*
y,range(1
,n+1
,1))foo
=lambdan:
reduce
(lambdax,
y:x+
y,[1
]*bar(n))
7樓:vectorwyx
最經典的 的演算法大概是求1~n的全排列了(不全部輸出)(感謝知友指正)
這個演算法可以用DFS做,也可以用STL自帶的next_permutation函式
用計算機證明數學命題可行嗎?
可行,這本身就是研發計算機的早期目標之一 把數學研究乃至演繹推理徹底自動化 Automated reasoning 直到現在也是電腦科學的乙個專門分支,雖然發展後勁遠遠跟不上前輩對它的期望就是了 本來是想從這條道路直接得到有自主思考能力的計算機 比較腦洞大開的思路是什麼呢?注意到電腦程式本身如何改進...
非計算機專業,計算機如何入門?
不懵傘 Fangxun 的推薦,親測有效。Crash Course.我是乙個不接觸計算機專業的人。現在,機械人都要發展起來了。我才不相信電子智慧型是什麼神奇魔法呢!所以,去看了Crash Course。它告訴我,是Computer Science.原來就是一堆電路。大道至簡。的確很神奇! 高讚答案已...
量子計算機出現後會不會重新定義時間複雜度和空間複雜度?
已重置 這個應該不會,因為時間空間複雜度是定義在我們對時空結構的理解上的,至少在電腦科學領域,複雜度還是定義在牛頓時空觀點上的。引入量子計算後,可能改變的是某些問題的複雜度的歸屬可能會發生改變,但是對於複雜度本身的定義應該沒有影響。當然,如果我們理解的時空結構可以被打破,比如出現時間旅行和蟲洞穿越的...