第一百零八章 怎麼解
「N皇后問題,其實還是比較簡單的。」張棟樑慢慢說道。
聽到這話,在座的部分高中生受到了暴擊。
「先說說約束條件。」
眾人心道果然。
「第一:大家沒有鍵盤,也沒有編譯器,需要用紙和筆,30分鐘之內寫好代碼給我,超時棄權。編程語言要求為C/C++/JAVA,這需要考察各位對編程語言基本的理解。」
「第二:這裡沒有最短運行時間,也不限你們的內存使用量,你們可以用任意方法。但是,方法最優,資源使用最少者勝,這個我來判定。」
「第三:勝者需要你們隊伍中選出最多兩人來講解你們的方法和思路,講不出視為失敗。那我就省下一本書了。」
「第四:你們只有一次提交機會,大家熟悉的COI賽制,可以有微小錯誤,但是不能有邏輯錯誤,關鍵邏輯寫註釋,字跡必須清晰。」
「第四:你們第一堂課需要請假了。」說到這裡,張棟樑笑了起來。
「那麼,開始!」
話音剛落,他手機上的計時器再次從零開始,飛快轉動起來。
而底下的學生們愣了幾秒鐘之後開始討論,一時間教室里很是熱鬧。
「一定是故意的,出這種難度的題……」
「我鬱悶啊,我做過八皇后,但是用的是遞歸,而且30分鐘太少了。」一位高一的學生鬱悶地說道。
「我用鍵盤寫出來都得十分鐘多,別說手寫了,我還沒怎麼用手寫過代碼呢。」
「這個題誰會去深鑽啊,做出來沒問題,但是30分鐘現想的話有難度了,而且要作出最優的解法更有難度了。」一位高二的學生抓耳撓腮地說道。
「關鍵是,寫出來后,並不知道其他人的解法,所以一定會反覆優化自己的解法,這樣沒有一個目標,很難,非常難。」高三的四大天王相對冷靜得多。
「只能先用最快的方法解出,然後再快速優化,排除遞歸。」一位數競國一且NOIP省一的高三學長沉思起來。
眾人的好勝心被激發了出來,這種比賽並沒有分值,只有勝者。所以,每個人不知道其他人方法的情況下,只能儘力把自己的方法寫的更好,更巧妙,降低各項複雜度。這樣,獲勝的概率才更高。
壓力籠罩在每一個人的頭頂,畢竟,如果時間足夠,只是寫出這個演算法,在場除開某小白團的成員外幾乎所有人都能熬出來。
但是,如果時間縮短到30分鐘,估計最多能有一半隊伍能寫出來就不錯了,這是在可以多次修改和編譯的情況下。如果是用紙和筆進行白板編程……這個數字就變得很不明朗了。
孟響獃獃的聽著張老師宣布完規則,然後看著其他人討論起來,他轉頭看向妹妹。
「什麼是N皇后?」
孟夢:「……」
看著孟夢獃滯的表情,孟響心裡有些平衡了,笑著說道:「原來萌萌你也不知道呀。」
「哼!」孟夢聽到哥哥的話非常生氣,傲然道:「我當然知道,我剛剛只是被哥哥你的笨給驚到了而已。」
孟響對妹妹投向懷疑的眼神,不屑地說道:「你這丫頭,才學計算機幾天,連代碼都不會寫,知道個屁,別吹牛,哥哥又不會笑你。」
剛剛說完,他就感覺腰子一疼。
「嘶……」
「我知道不知道!」孟夢眯起眼睛,手微微用力,威脅道。
孟響冷吸一口氣連忙討饒:「知道知道,夢神千秋萬代,一統長星。」
孟夢聽到后,非常滿意的鬆了手,又心疼地幫哥哥輕輕揉了揉腰間的軟肉。
「那你說說這個玩意兒是啥。」孟響一邊享受痛苦后的快樂,,一邊把紙和筆擺在了妹妹面前。
孟夢收回了手,拿起哥哥遞來的中性筆,一邊畫圖一邊說道:「其實,這並不僅僅是一個計算機問題,這是一個數學問題。」
孟響點了點頭,收起了開玩笑的表情,示意妹妹繼續。
「我很早之前就有看過這類問題,那會兒特地好好琢磨了一下這些問題。」說完,孟夢在紙上花了幾個格子,然後問道:「哥哥你知道八皇后嘛?」
孟響用力點了點頭,他當然聽過。
「那你知道這個題的規則嗎?」孟夢再次問道。
「.…..」孟響同學用力搖了搖頭,他沒玩過國際象棋,而且只是聽過這個名詞而已。
見哥哥搖頭,孟夢露出了勝利般的笑容,孟響甚至能看到妹妹牙齒上的小窟窿。
「我先給哥哥解釋一下八皇后吧,八皇后就是在一個8*8的棋盤上,你擺上8個棋子,讓他們任意兩個棋子不能處在同一行,同一列,或者同一斜線上,就是一種成功的擺法,我們說的八皇后問題,就是要求出,一共有多少種這樣的擺法。」
孟響腦中開始開始遍歷……
十秒鐘之後。
「媽賣批,我核心不夠!我要加核。」孟響遍歷了不到十種之後,就放棄了這種愚蠢的方法。他對妹妹點了點頭問道:「那一共有多少種?」
孟夢稍稍思考了一兩秒鐘說道:「我記得八皇后問題的解是92種。」
孟響:「.…..」
這要是個求答案的題目該多好呀。
「那,沒法用筆算出來嘛?」孟響小心翼翼地問道。
果然,妹妹投來了鄙視的眼神,又好氣又好笑地把筆往孟響手裡一塞:「給你筆,你算!」
孟響:「.…..」
「當年高斯也就算出76種,而且不知道花了多少時間,這個30分鐘我們算什麼?而且,這是N皇后問題,要是9皇后呢,10皇后呢,更多的皇后呢?」
孟響聽后內牛滿面,這次,他活生生被鄙視的體無完膚!
「那我們要怎麼辦……你會寫代碼嗎?那隻能靠你了,萌萌千秋萬代,一統長星。」孟響儼然成了一個跟班小人物。
「還沒來得及學呢。」孟夢聽后翻了個白眼,她這段時間就看了看演算法和數據結構的書,數學底子很強的她看起來絲毫不費力,至於代碼……她只會偽代碼。
「那,你先給我說說這個題要怎麼做吧,免得待會兒聽都聽不懂。」孟響想了想說道,然後又把筆塞給了妹妹。他們反正是來觀光的,做不做出來也無所謂了。
孟夢接過筆,微微嘟了一下嘴之後才細細地說道:「這個問題,可以使用多種方法來解,我了解的有遞歸,枚舉法,還有就是回溯法。」
「我覺得,這個的最優解法應該是怎麼利用好回溯法。」
你是小天才,你數學好,當然什麼都聽你的咯。
孟響腹誹道。