999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

簡單枚舉法在信息學競賽中的應用

2014-07-19 19:18:53杜春玲
考試周刊 2014年42期

杜春玲

摘 要: 枚舉法是信息學競賽中一種最基本的算法,是競賽中最常見的題型,本文主要介紹信息學競賽中的枚舉法,從枚舉算法的優化和判定條件這兩個方面探討如何用枚舉法解答信息學競賽試題。

關鍵詞: 枚舉法 信息學競賽 算法優化 判定條件

信息學競賽是在具有豐富知識和一定實踐能力的基礎上,思維與思維的競賽。優秀的選手往往具有快速、敏捷的思維。因此,我們在不斷探討方法、總結經驗的同時,有必要嘗試探索系統的思維方法,達到啟迪思路的目的,本文就介紹信息學競賽中的一種思維方法:枚舉法。

枚舉法(也稱窮舉法) ,是基于計算機運算速度快這一特性,使用的非常普遍的思維方法。根據問題中可能的情況,一一列舉出分析求解的方法,它指在一個有窮的可能的解的集合中,枚舉出集合中的每一個元素,用題目給定的約束條件判斷其是否符合條件,若滿足條件,則該元素即為整個問題的解;否則就不是問題的解。

下面探討如何用枚舉法解題。

一、縮小枚舉范圍可以優化枚舉算法

我們以枚舉算法的經典例題:百錢買百雞,探討枚舉算法的優化。

有個人打算用一百塊錢買一百只雞。到市場一看,大雞三塊錢一只,不大不小的雞兩塊錢一只,小雞一塊錢三只。怎樣才能用一百塊錢買一百只雞?

算法分析:我們以三種雞的個數為枚舉對象(分別設為x,y,z),以三種雞的總數(x+y+z)和買雞用去的錢的總數(x*3+y*2+z)為判定條件,窮舉各種雞的個數。以下是解百雞問題的程序:

for x∶=0 to 100 do {枚舉大雞所有可能的解}

for y∶=0 to 100 do{枚舉不大不小的雞所有可能的解}

for Z∶=0 to 100 do{枚舉小雞所有可能的解}

if (x+y+z=100)and(x*3+y*2+z div 3=100)and (z mod 3=0) then writeln(x,y,z);

本題還有優化空間,三種雞的總只數是100,我們只要枚舉兩種雞(x,y),第三種雞就可以根據約束條件求得(z=100-x-y),這樣就縮小了枚舉范圍,請看下面的程序:

for x:=0 to 100 do

for y:=0 to 100-x do

begin z:=100-x-y;

if (x*3+y*2+z div 3=100)and(z mod 3=0)then writeln(x,y,z); end;

未經優化的程序循環了101■ 次,優化后的程序只循環了(102*101/2)次。因此,對于枚舉算法,找出約束條件,縮小枚舉范圍,是程序優化的主要考慮方向。

二、解題的關鍵是設定正確的判定條件

在解題過程中,枚舉法的判定條件也很重要,如果約束條件不正確或不全面,就窮舉不出正確的結果,請看一元三次方程求解的例子。

ax■+bx■+cx+d=0,該方程各項系數(a,b,c,d均為實數),并設定該方程有三個不同實根(根的范圍在-100至100之間,且根與根之差的絕對值>=1)。要求在同一行輸出這三個實根,并精確到小數點后兩位。

算法分析:根的范圍在-100到100之間,保留兩位小數,我們將根的值域擴大100倍(-10000<=x<=10000),再以根為枚舉對象,枚舉范圍是-10000到10000,用原方程式一一驗證,找出方程的解。

有的同學是這樣做的:

for i:=-10000 to 10000 do

begin x:=i/100;

if a*x*x*x+b*x*x+c*x+d=0 then write(x:0:2,); end;

用這樣的方法把程序編寫出來,將樣例數據代入測試是對的,但這題不完全對。

這種解法為什么有問題呢?通過上面的算法,枚舉范圍和枚舉對象都沒有錯,但在驗證枚舉結果時,判定條件用錯了。由于要保留兩位小數,因此求出來的解不一定是方程的精確根,再代入ax■+bx■+cx+d中,所得的結果就不一定等于0,因此用原方程ax■+bx■+cx+d作為判斷條件是不準確的。

我們換一個思路考慮這個問題,該方程f(x)=ax■+bx■+cx+d,假設x為方程的根,一定會有f(x-0.005)*(x+0.005)<0,如果以此為枚舉算法的判定條件,問題就會順利解決。而且,如果f(x-0.005)=0,就說明x-0.005是方程的根,這時四舍五入,方程的根就是x。所以我們用 (f(x-0.005)*f(x+0.005)<0) 和 (f(x-0.005)=0)作為判定條件。

用枚舉法解題的最大缺點是運算量比較大,解題效率低,如果枚舉范圍太大(一般以不超過兩百萬次為限),就會超出競賽要求的時限。但枚舉算法的思路簡單,比賽時容易想到,易于程序編寫和調試,因此,如果題目的枚舉范圍規模不是很大,在規定時限內能夠求出正確的解,那么我們最好采用枚舉法,而不需要耗用時間想那些更快的算法,這樣就可以有更多時間解答其他難題。

主站蜘蛛池模板: 国产精品乱偷免费视频| 国产在线第二页| 久久国产热| 在线看片免费人成视久网下载| 色综合久久无码网| 亚洲人在线| 欧美在线视频不卡| 色综合五月婷婷| 欧美成人精品一级在线观看| 日韩人妻无码制服丝袜视频| 国产区在线观看视频| 色呦呦手机在线精品| 韩国福利一区| 伊人91视频| 国产成a人片在线播放| 亚洲狼网站狼狼鲁亚洲下载| YW尤物AV无码国产在线观看| 亚洲成在线观看| 成人一区专区在线观看| 亚洲中文无码h在线观看 | jizz国产在线| 久久亚洲综合伊人| 亚洲中久无码永久在线观看软件 | 色偷偷一区| 91在线免费公开视频| 日本91在线| 91久久国产综合精品女同我| 国产h视频免费观看| 免费啪啪网址| 片在线无码观看| 久久久久国产精品熟女影院| 欧美国产综合色视频| 亚洲综合激情另类专区| 国产91特黄特色A级毛片| 久久99国产综合精品女同| 九九九精品视频| 极品私人尤物在线精品首页 | 亚洲妓女综合网995久久| 国产免费羞羞视频| 中文字幕久久波多野结衣| 亚洲精品第一在线观看视频| 国产毛片网站| 国产成人综合日韩精品无码不卡| 亚洲日韩国产精品综合在线观看| 欧美成人综合视频| 亚洲国产天堂久久九九九| 狠狠色婷婷丁香综合久久韩国 | 日本道综合一本久久久88| 亚洲无码一区在线观看| 亚洲国产成人麻豆精品| 国产91线观看| 综合五月天网| 国产99欧美精品久久精品久久| 国产视频 第一页| 国产欧美日韩18| 国产无码精品在线播放| 亚洲成人播放| 免费大黄网站在线观看| 亚洲国产精品久久久久秋霞影院| 精品夜恋影院亚洲欧洲| 亚洲色图综合在线| 狠狠躁天天躁夜夜躁婷婷| 亚洲黄网在线| 99久久国产综合精品2023| 欧美在线视频不卡第一页| 国产精品成人一区二区不卡| 超碰aⅴ人人做人人爽欧美 | 国产69精品久久| 中文字幕久久波多野结衣| 99久久国产精品无码| 人妻91无码色偷偷色噜噜噜| 日韩成人高清无码| 国产成人亚洲精品蜜芽影院| 色综合a怡红院怡红院首页| 欧美国产日本高清不卡| 久久伊人色| 亚洲AV电影不卡在线观看| 久草性视频| 欧美精品亚洲二区| 欧美视频免费一区二区三区| 国产AV毛片| 欧美成人免费|