信息學(xué)競(jìng)賽輔導(dǎo)中“擠”的藝術(shù)(3)
2009-11-12 22:11:49網(wǎng)絡(luò)
好!大功告成,一路下來(lái),經(jīng)過(guò)多次修改程序,辛苦終于沒(méi)有白費(fèi),四組測(cè)試數(shù)據(jù)全部通過(guò),40分滿分到手!大家不由自主地歡呼起來(lái)!
這時(shí),一個(gè)學(xué)生站起來(lái)?yè)P(yáng)手給出兩個(gè)測(cè)試數(shù)據(jù):1351,13。于是一陣騷動(dòng)后,眾將士一至認(rèn)定,再改程序,把剛剛加上去的條件修改為:當(dāng)兩個(gè)數(shù)的前若干位完全相同,而兩個(gè)數(shù)的位數(shù)又不同時(shí),判斷位數(shù)大的那一個(gè)數(shù)(記位數(shù)大的數(shù)位數(shù)為X,位數(shù)小的數(shù)的位數(shù)為Y),如果它的左邊第Y+1位大于左邊第一位,則應(yīng)排在另一數(shù)之前;如果它的左邊第Y+1位小于左邊第一位時(shí),應(yīng)該排在另一數(shù)之后。按此原則:1351,13的排列順序?yàn)椋?35113。這次,大家終于明白,出題者的測(cè)試數(shù)據(jù)如果加上這一組的話,那將有多少得滿分同學(xué)的:-)變成:-(。
這時(shí),大家都不說(shuō)話了,是!修改程序到了現(xiàn)在,是不是……
于是,我冷冷地在黑板上寫(xiě)下兩個(gè)數(shù)字:323,32。于是,幾秒鐘后,大家臉色一變,再也沒(méi)了笑容……
四、“擠”出本質(zhì),做出真正完美的程序
拿到滿分竟然也不算全對(duì),對(duì)于323,32這兩個(gè)數(shù)據(jù),許多同學(xué)都傻了眼,這老師怎么什么都能“擠”出來(lái)!題目雖然算是做完了,卻還有一片可發(fā)展的空間。沒(méi)辦法,有老師逼著,當(dāng)然得繼續(xù)想下去,只不過(guò),原有的程序可能要大改啦!看看時(shí)機(jī)已到,于是我給出重新考慮的算法如下:
同樣是排序,但排序原則是:對(duì)于任意兩個(gè)數(shù)相比,如果位數(shù)不同,則把位數(shù)短的一數(shù)添加最后一位,直到長(zhǎng)度與位數(shù)長(zhǎng)的數(shù)相同,然后判斷大數(shù)在前,小數(shù)再后即可。如:323、32,把32添加數(shù)“2”變?yōu)?22,于是323應(yīng)該排在32之前。于是,大家把原先修改得體無(wú)完膚的程序再次進(jìn)行大改,新程序反而變得非常短小。再把前面已經(jīng)測(cè)試過(guò)的數(shù)據(jù)再測(cè)試一遍,結(jié)果全部通過(guò),大家這次心里的石頭才落了地,紛紛要我給50分!
我笑著搖了搖頭,看著這些被這個(gè)小題目“折磨得死去活來(lái)”的隊(duì)員們,真是不忍心再次“擠”給他們一盆冷水。于是我再次在黑板上寫(xiě)下兩個(gè)數(shù):322,32。
這次,大家再也沒(méi)有任何話語(yǔ),再次小改程序,排序時(shí),當(dāng)位數(shù)小的一數(shù)添加最后一位后,所得數(shù)與另一數(shù)相同,則原位數(shù)越短的應(yīng)該排在前面。即:322、32的排列順序是:32322。
終于可以休息一下了!看來(lái)小小的題目也可以擠出如此多的深刻內(nèi)含,以后再也沒(méi)有學(xué)生敢小看小題目,輕視小題目了。于是,隊(duì)員們一起給出一組完全的測(cè)試數(shù)據(jù),看看你的程序答案對(duì)嗎?
輸入: 7
323 325 321 32 3 35 322 13 1351
輸出: 35332532332322321135113
最后,給出程序排序部分條件描述如下:
把數(shù)1、數(shù)2湊成長(zhǎng)度相同的新數(shù)1、新數(shù)2(給位數(shù)短的數(shù)添加最后一位)
IF 新數(shù)1小于新數(shù)2 THEN 交換數(shù)1數(shù)2位置 ELSE IF (新數(shù)1等于新數(shù)2) AND (數(shù)1長(zhǎng)度>數(shù)2長(zhǎng)度) 則交換數(shù)1數(shù)2位置
就這樣,一個(gè)小小的題目“擠”出了一大堆問(wèn)題。如果在競(jìng)賽訓(xùn)練中教練多抓住機(jī)會(huì)對(duì)隊(duì)員進(jìn)行這種“擠”的訓(xùn)練,相信隊(duì)員們會(huì)比在普通的訓(xùn)練方法中得到更多經(jīng)驗(yàn)、思考方法,這對(duì)鍛煉學(xué)生分析透徹題目本質(zhì)的能力是非常重要的,尤其是當(dāng)前信息學(xué)奧賽試題向?qū)嶋H問(wèn)題方面發(fā)展,試題的本質(zhì)往往深藏在大量的文字說(shuō)明之中,要分析透徹題目的真正本質(zhì)再下手編寫(xiě)程序并能一次成功是每個(gè)高層次選手必須具備的能力,而這種能力正是在平常訓(xùn)練中逐步獲得的。