第一百零八章 怎么解
“N皇后問題,其實(shí)還是比較簡(jiǎn)單的?!睆垪澚郝f道。
聽到這話,在座的部分高中生受到了暴擊。
“先說說約束條件。”
眾人心道果然。
“第一:大家沒有鍵盤,也沒有編譯器,需要用紙和筆,30分鐘之內(nèi)寫好代碼給我,超時(shí)棄權(quán)。編程語言要求為C/C++/JAVA,這需要考察各位對(duì)編程語言基本的理解?!?p> “第二:這里沒有最短運(yùn)行時(shí)間,也不限你們的內(nèi)存使用量,你們可以用任意方法。但是,方法最優(yōu),資源使用最少者勝,這個(gè)我來判定?!?p> “第三:勝者需要你們隊(duì)伍中選出最多兩人來講解你們的方法和思路,講不出視為失敗。那我就省下一本書了。”
“第四:你們只有一次提交機(jī)會(huì),大家熟悉的COI賽制,可以有微小錯(cuò)誤,但是不能有邏輯錯(cuò)誤,關(guān)鍵邏輯寫注釋,字跡必須清晰。”
“第五:你們第一堂課需要請(qǐng)假了?!闭f到這里,張棟梁笑了起來。
“那么,開始!”
話音剛落,他手機(jī)上的計(jì)時(shí)器再次從零開始,飛快轉(zhuǎn)動(dòng)起來。
而底下的學(xué)生們愣了幾秒鐘之后開始討論,一時(shí)間教室里很是熱鬧。
“一定是故意的,出這種難度的題……”
“我郁悶啊,我做過八皇后,但是用的是遞歸,而且30分鐘太少了?!币晃桓咭坏膶W(xué)生郁悶地說道。
“我用鍵盤寫出來都得十分鐘多,別說手寫了,我還沒怎么用手寫過代碼呢?!?p> “這個(gè)題誰會(huì)去深鉆啊,做出來沒問題,但是30分鐘現(xiàn)想的話有難度了,而且要作出最優(yōu)的解法更有難度了?!币晃桓叨膶W(xué)生抓耳撓腮地說道。
“關(guān)鍵是,寫出來后,并不知道其他人的解法,所以一定會(huì)反復(fù)優(yōu)化自己的解法,這樣沒有一個(gè)目標(biāo),很難,非常難?!备呷乃拇筇焱跸鄬?duì)冷靜得多。
“只能先用最快的方法解出,然后再快速優(yōu)化,排除遞歸。”一位數(shù)競(jìng)國一且NOIP省一的高三學(xué)長(zhǎng)沉思起來。
眾人的好勝心被激發(fā)了出來,這種比賽并沒有分值,只有勝者。所以,每個(gè)人不知道其他人方法的情況下,只能盡力把自己的方法寫的更好,更巧妙,降低各項(xiàng)復(fù)雜度。這樣,獲勝的概率才更高。
壓力籠罩在每一個(gè)人的頭頂,畢竟,如果時(shí)間足夠,只是寫出這個(gè)算法,在場(chǎng)除開某小白團(tuán)的成員外幾乎所有人都能熬出來。
但是,如果時(shí)間縮短到30分鐘,估計(jì)最多能有一半隊(duì)伍能寫出來就不錯(cuò)了,這是在可以多次修改和編譯的情況下。如果是用紙和筆進(jìn)行白板編程……這個(gè)數(shù)字就變得很不明朗了。
孟響呆呆的聽著張老師宣布完規(guī)則,然后看著其他人討論起來,他轉(zhuǎn)頭看向妹妹。
“什么是N皇后?”
孟夢(mèng):“……”
看著孟夢(mèng)呆滯的表情,孟響心里有些平衡了,笑著說道:“原來萌萌你也不知道呀。”
“哼!”孟夢(mèng)聽到哥哥的話非常生氣,傲然道:“我當(dāng)然知道,我剛剛只是被哥哥你的笨給驚到了而已?!?p> 孟響對(duì)妹妹投向懷疑的眼神,不屑地說道:“你這丫頭,才學(xué)計(jì)算機(jī)幾天,連代碼都不會(huì)寫,知道個(gè)屁,別吹牛,哥哥又不會(huì)笑你?!?p> 剛剛說完,他就感覺腰子一疼。
“嘶……”
“我知道不知道!”孟夢(mèng)瞇起眼睛,手微微用力,威脅道。
孟響冷吸一口氣連忙討?zhàn)垼骸爸乐溃瑝?mèng)神千秋萬代,一統(tǒng)長(zhǎng)星。”
孟夢(mèng)聽到后,非常滿意的松了手,又心疼地幫哥哥輕輕揉了揉腰間的軟肉。
“那你說說這個(gè)玩意兒是啥?!泵享懸贿呄硎芡纯嗪蟮目鞓罚?,一邊把紙和筆擺在了妹妹面前。
孟夢(mèng)收回了手,拿起哥哥遞來的中性筆,一邊畫圖一邊說道:“其實(shí),這并不僅僅是一個(gè)計(jì)算機(jī)問題,這是一個(gè)數(shù)學(xué)問題?!?p> 孟響點(diǎn)了點(diǎn)頭,收起了開玩笑的表情,示意妹妹繼續(xù)。
“我很早之前就有看過這類問題,那會(huì)兒特地好好琢磨了一下這些問題?!闭f完,孟夢(mèng)在紙上花了幾個(gè)格子,然后問道:“哥哥你知道八皇后嘛?”
孟響用力點(diǎn)了點(diǎn)頭,他當(dāng)然聽過。
“那你知道這個(gè)題的規(guī)則嗎?”孟夢(mèng)再次問道。
“.…..”孟響同學(xué)用力搖了搖頭,他沒玩過國際象棋,而且只是聽過這個(gè)名詞而已。
見哥哥搖頭,孟夢(mèng)露出了勝利般的笑容,孟響甚至能看到妹妹牙齒上的小窟窿。
“我先給哥哥解釋一下八皇后吧,八皇后就是在一個(gè)8*8的棋盤上,你擺上8個(gè)棋子,讓他們?nèi)我鈨蓚€(gè)棋子不能處在同一行,同一列,或者同一斜線上,就是一種成功的擺法,我們說的八皇后問題,就是要求出,一共有多少種這樣的擺法。”
孟響腦中開始開始遍歷……
十秒鐘之后。
“媽賣批,我核心不夠!我要加核?!泵享懕闅v了不到十種之后,就放棄了這種愚蠢的方法。他對(duì)妹妹點(diǎn)了點(diǎn)頭問道:“那一共有多少種?”
孟夢(mèng)稍稍思考了一兩秒鐘說道:“我記得八皇后問題的解是92種。”
孟響:“.…..”
這要是個(gè)求答案的題目該多好呀。
“那,沒法用筆算出來嘛?”孟響小心翼翼地問道。
果然,妹妹投來了鄙視的眼神,又好氣又好笑地把筆往孟響手里一塞:“給你筆,你算!”
孟響:“.…..”
“當(dāng)年高斯也就算出76種,而且不知道花了多少時(shí)間,這個(gè)30分鐘我們算什么?而且,這是N皇后問題,要是9皇后呢,10皇后呢,更多的皇后呢?”
孟響聽后內(nèi)牛滿面,這次,他活生生被鄙視的體無完膚!
“那我們要怎么辦……你會(huì)寫代碼嗎?那只能靠你了,萌萌千秋萬代,一統(tǒng)長(zhǎng)星?!泵享憙叭怀闪艘粋€(gè)跟班小人物。
“還沒來得及學(xué)呢。”孟夢(mèng)聽后翻了個(gè)白眼,她這段時(shí)間就看了看算法和數(shù)據(jù)結(jié)構(gòu)的書,數(shù)學(xué)底子很強(qiáng)的她看起來絲毫不費(fèi)力,至于代碼……她只會(huì)偽代碼。
“那,你先給我說說這個(gè)題要怎么做吧,免得待會(huì)兒聽都聽不懂。”孟響想了想說道,然后又把筆塞給了妹妹。他們反正是來觀光的,做不做出來也無所謂了。
孟夢(mèng)接過筆,微微嘟了一下嘴之后才細(xì)細(xì)地說道:“這個(gè)問題,可以使用多種方法來解,我了解的有遞歸,枚舉法,還有就是回溯法?!?p> “我覺得,這個(gè)的最優(yōu)解法應(yīng)該是怎么利用好回溯法?!?p> 你是小天才,你數(shù)學(xué)好,當(dāng)然什么都聽你的咯。
孟響腹誹道。