你的啟蒙演算法是什麼?

時間 2021-10-16 07:07:40

1樓:陳然

提問的原意是「打通任督二脈」,我也分享一下我的經歷,但並不是某個演算法,可能有些跑題。

我在初高中的時候學習過一些 Pascal 程式設計,主要是為了參加 NOIP 競賽。那時候對於程式設計的理解非常侷限於函式的實現,覺得能夠實現複雜的深搜廣搜和動態規劃就是很厲害的人了,各種能把 N^2 降低到 N*Log(N) 的奇淫技巧都好厲害,練習 KMP 這樣的字串匹配演算法也是家常便飯。對於程式設計高手的理解非常侷限於「快速而正確地實現常用的函式」。

本科的專業是計算機軟體,大一的某課大作業是用 C# 在老師提供的 API 上完成乙個區域網聊天室。這是我第一次接觸工程類的專案,第一次使用 Visual Studio 配置複雜的程式設計環境。助教在作業的過程中帶我們手把手開啟了MSDN,帶我們檢視了字串處理的各種API,只需要呼叫函式就能完成 replace,substring,sort。

這對我而言簡直顛覆三觀,晴天霹靂!原來我並不需要手寫 KMP,MSDN 裡面啥都有!

API 的出現讓我一下子跳脫了那種拘泥於函式實現的侷限,讓我意識到函式復用所帶來的無限可能。原來已經有那麼多別人實現的功能,我可以如此輕易地站在別人的肩膀上。而後出現的移動網際網路和各種SDK,可以輕易地組合出各種有意思的應用。

意識到 API 的存在,算是我「打通任督二脈」的時刻吧。對我而言,使用工具去解決問題的快樂,大於打造工具本身。

2樓:

寬度優先搜尋。

2023年春季郭煒《程式設計實習》。

不算打通任督二脈,至少是,從完全不會寫程式被遞迴虐到死,到,會比較熟練地寫某類題目的「飛躍」。

然後後面從這裡開始理解dfs等也不算很難了。

3樓:farter yang

第乙個大概算是,寫俄羅斯方塊時新增AI,用的廣度優先搜尋演算法(因為想讓方塊支援軟降後移動、旋轉踢牆進坑達到所有可能的地方,同時又是最短路徑)。

腦內先是按照填色演算法(但不能向上)去腦補的,接下來再把所有帶踢牆的旋轉一起抽象成「動作」,就差不多成型了。

(題外話,這個演算法至今還在被優化(常數優化,位運算什麼的))另外還有個,球面均勻隨機點,試圖做真正的球形烟花,意識到了亂做(比如尤拉角)肯定不對,初中還沒學數學分析【現在學了還是沒學會】自己瞎推了乙個【至今不知道對不對

A演算法和A 演算法的區別是什麼

若羽 A 演算法是一種可容納最優的啟發式搜尋演算法 其中 是最接近目標的真實代價,是實際A 演算法擬合的函式。伯克利的CS188課舉過這樣乙個例子 A是最優目標 區域性的 B是次優目標。B在邊緣,A的一些祖先節點n也在邊緣,代價函式f n 小於f A A 搜尋必須考慮forward cost和bac...

這個是什麼演算法?

藍色 經典演算法 向上取整 我剛才竟然想到的是四捨五入,Sigh.其實就是考慮計算機中 的兩個運算元都是整數的情況如何處理這樣的除法。 俗話說的 加一法 與之相對的還有 捨去法 加一法一般用在資源分配問題上,比如分配宿舍,多乙個人你也得多安排一間 而捨去法一般用在創造價值上,比如每5個人可以抱一棵樹...

演算法時間複雜度為O(n )的是什麼演算法?

子正 O n 的演算法不稱其為演算法,它意味著這個問題尚未解決。n稍微大一點,就會耗盡CPU的算力。它比不斷摺紙 圍棋盤上擺大公尺得到的數更大。這種 演算法 是進行演算法改進的物件。演算法老師沒有花力氣說明這種演算法的荒謬之處倒是個很不可思議的事情。n 是個很大的數,你可以用windows自帶的計算...