理解不了N皇后以後還能當程式設計師麼?

時間 2021-06-01 01:07:42

1樓:克萊爾

如果你不是理解不了問題本身,你的標題應該改成「解不了N皇后……」。

先用窮舉實現一遍,再試圖優化。

跳過思維過程,拿來主義,直接用backtracking。回溯包含兩個方向的變化過程,縱向:同乙個解,每向前走一步,可看作縱向推進一步。

橫向:縱向的每一步有多個可能性——像平行宇宙,分叉出多個解——每步遍歷這步的所有可能性,每個可能性執行完,回退,進入另乙個可能性。

2樓:黃哥

不能簡單說暫時理解不了回溯演算法解決N皇后問題,就推斷出當不了程式設計師。

暫時理解不了沒有關係,但願意不願意花時間去理解才是重點。

3樓:陸海綿

先別急著說能不能做程式設計師,我們先來看看下面幾個小問題,小問題解決了,大問題也就有了方向。

你能不能理解8皇后的意思,就是用你自己的話把8皇后解釋給別人聽。

能不能羅列一下4皇后問題的解決步驟,注意,只要解決步驟,人要看得懂,別人按著你的步驟在紙上就能算出結果。

能不能用你熟悉的程式語言,實現第二步的步驟。

以上三步,你發現那個不清楚,就去解決那一步。

4樓:方應杭

我在對新人進行培訓的時候,會告訴他們程式設計有三個必要條件:

觀察能力

邏輯思維

熱情如果乙個人發現不了小寫 s 和大寫 S 的區別、半形空格和全形空格的區別,那麼學程式設計會異常痛苦。

所以我會出一些這方面的題來「坑」ta,讓 ta 時刻注意觀察這些微小的區別。

我認為程式設計師必須能理解經典的三段論邏輯,比如

JS 中所有的函式都是由 Function 構造的

Function 是乙個函式

所以,Function 是由 Function 構造的

如果他能理解這其中的邏輯,那就可以繼續學下去。

如果乙個人為了錢而程式設計,那麼 ta 可能可以堅持程式設計十年,但 ta 絕對堅持不了 20 年。

所以想要在程式設計這條路上走得遠,就需要發自內心對程式設計產生熱愛。

這種熱愛體現在:

當你想通乙個知識點時的酣暢感

當你解決乙個 bug 時的成就感

當你看見比你厲害的人時的崇拜感

等等。至於理解八皇后,都是可以通過訓練搞定的。而且長時間不接觸,又會忘掉需要多次記憶。

5樓:fiora

這個時候, 是不是應該先從4皇后向後推導到8皇后??

Input:4

Output:[

[".Q.."

,// Solution 1

"...Q"

,"Q..."

,"..Q."],[

"..Q."

,// Solution 2

"Q..."

,"...Q"

,".Q.."]]

6樓:

程式設計師不一定會N皇后的。。。。

甚至程式設計師可以寫不出快排。。。。。

會打幾個庫的首字母,剩下的就靠IDE了。。。。。。

但出來混的早晚要還的,會的太少,就只能搬磚

7樓:

現在新高二。初中就開始接觸程式設計,學到至今沒有老師,基本完全自學。初中學到函式,感覺當時真的理解不了。

然後就放棄了,其實初中也就只能算是認識了什麼是程式吧。當時基本完全理解不了複雜的遞迴。

接觸到n皇后是高一,當時開始重新學演算法是漸漸能理解看著演算法明白較複雜的遞迴了,但是寫不出來。自己只能分析問題寫一些較簡單的遞迴。

說句實話,計算機這東西,只要去花時間,我覺得沒有什麼理解不了的。自學關鍵就是要去磨。

有老師的話最好(我沒有哭死)。一定要會利用資源,還有最好補充一點基礎數論知識,對優化演算法很有利。

最後乙個事實:如果你不是發自內心的感興趣是絕對做不好一件事的。即使告訴了你如何去學也一定仍舊無動於衷。就像喊了那麼多年好好學習,你仍舊不會好好學習一樣。↖(▔^▔)↗

8樓:朱早起

演算法不是程式設計師的必經之路,但相對於程式設計師來說,有絕對比沒有好!

(參加競賽學的全部演算法,至今用過合適用只有快排、kruskal和dijstra!我也是醉了)

9樓:null122

8皇后這不是數學問題嗎?

這道題的關鍵是搞清楚圖的邏輯

至於搜尋,就算你確實笨的不行想不出來,只要你把這個圖論問題理解,看一遍演算法也不會再望,太簡單了真的

10樓:

必然是可以的,大多數程式設計師的工作,其實寫出來的永遠都是難度類似競賽中所謂"模擬題"的難度,任何超過這個難度的功能,基本都是用別人造好的工具。

另外,我看了一下這個問題,心裡默默分析了一下,嗯。。。。。。

估計我有超過一半的程式設計師同事,也理解不了這題吧!

11樓:小樓一夜聽春雨

這個沒事的,你可能對於遞迴不是很理解,建議你抽出一部分時間專攻遞迴演算法,尤其是資料結構裡樹的各種操作,圖形結合演算法,理解的更快, 遞迴演算法我剛剛學的時候也不會,我記得很清楚,那個下午一直在思考,晚上吃飯也在想,這些其實都是值得的, 天才確實有,但普通人經過努力,也可以達到他們的境界,你也知道郭靖和楊康的故事,金老爺子要告訴我們的就是這個道理,不要放棄!

12樓:「已登出」

當年我還是個孩子,向飛燕大神請教這題時,她告訴我一種叫打表的暗黑演算法。

後來我自己又發現了論壇解題演算法、知乎解題演算法等暗黑演算法。只不過這類演算法需要網路支援且需要大量等待時間,而且還不能保證100%正確解題。

13樓:王喆

我認為這並不是智商的問題,而是題主對這類問題理解有些問題。

1.函式的遞迴呼叫要滿足先驗條件A才能生成後驗條件B,2.假設:

每次迴圈開始時A滿足,遞迴呼叫後B滿足,推到出:在執行迴圈結束時A仍然滿足,然後退出函式時B滿足,這樣程式就是正確的,這樣乙個推倒的過程實質上是歸納法。在八皇后問題中A可以看作棋盤已經部署好(該固定的已經固定),B可以看作在輸出當前棋子落下當前選擇後的所有可能性。

另外,個人建議這類問題不要嘗試著模擬棧的行為,因為人腦比計算機不擅長記憶,從原理上理解(或證明)這樣的問題可能會是更好的選擇。

14樓:「已登出」

=-=這是知乎我看見的第乙個能回答的IT問題。。。Orz

八皇后=-= 好好看書吧。一行行的代入資料,在書上走上三遍,就懂了。

以後任重道遠=-= 什麼最短路徑,遍歷圖的兩種演算法=-= 遍歷樹。 加油加油。別放棄,好好苦心孤詣鑽研鑽研=-=

15樓:

Alaya-in-Matrix/clash-haskell-fpga · GitHub

你看,我用Haskell寫了個編譯成verilog燒在FPGA上的N 皇后問題。

現在正在課堂上等著一會做pre

16樓:鄧毅

N皇后問題是乙個經典的遞迴問題,遞迴是電腦科學裡面乙個非常重要的概念與技術,要想找到工作,遞迴是必須明白的。否則,就算勉強找到乙個程式設計師的工作,也會很鬱悶,如果這樣又何苦一定要當程式設計師呢?

我也不是說N皇后問題就是一看就能懂的,題主可以試試從一些更簡單的遞迴問題開始學習,再回來看,也許就能明白了。

17樓:

先把基礎打實吧,學走路,還走不穩的時候,先別急著學跑。

把遞迴那塊多看看,多敲敲,等你什麼時候跟玩似的,理解n皇后就容易了。

當年,我也是敲了好幾周的基礎題,才開始接觸這個程度的題目。

18樓:dabbler0606

如果是有人給你講,也許是他講的不清楚

如果是看書,也許是書不好

有懷疑自己的時間,換本書看,或者看看別人的部落格我記得有人給我說過,能上學的智商都沒什麼問題,你不會別人會也許是你沒他努力

別懷疑自己,加油

如何深入理解紅皇后假說?

原話是 你必須盡力地不停地跑,才能使你保持在原地 換如下字樣 道德經裡面講的 世界唯一不變的是 無時無刻不在改變 這句話應該更容易去理解上面的話。中國古語 逆水行舟,不進則退。耳熟能詳的詩句。21世紀,比你優秀的人還在比你很努力的學習。以上3句話應該更能幫助我們去理解紅皇后假說的定義。而我所理解的通...

學C語言的時候,有多少人理解不了老師說的 n是乙個字元?明明看到是兩個!若你是老師,如何向學生解釋?

稚者楊力 有些我們看不到的東西,它也是字元,佔乙個位元組,比如換行,tab。我想把它寫出來,該怎麼寫呢?換行和tab是看不到的,不可能像字母那樣,長什麼樣就寫成什麼樣吧,不然一大段空白,它是乙個tab呢,還是4個空格?這時,我們就需要自己定義一些東西,看到它,我們就會知道這裡原來是乙個tab。那麼,...

如何簡單的理解n維空間?

大學問安心吃虧 樓主說的n維空間是線代中的吧?其實很好理解,你在學習的時候,老師應該給你說三維空間用三個座標表示,即三維空間座標系。此時向量n x,y,z 裡面有三個元素,然後稱之為三維,如果再加乙個元素呢,相當於在座標系中再加乙個軸,此刻就是數學中稱之的4維了,遞推一下,就是乙個向量的括號裡有n個...