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

Instructions問題算法分析

2008-12-31 00:00:00馬骉骉
電腦知識與技術 2008年22期

摘要:ACM/ICPC(ACM International Collegiate Programming Contest)是ACM國際大學生程序設計競賽的簡稱,這是世界計算機領域的一項權威賽事。該文就是針對ACM國際大學生程序設計中的一道題目的解法進行算法分析,道題目的名字叫做“Instructions”。通過對原問題進行理解,通過暴力方法,動態遞推法,對原問題進行算法分析和實現,然后對算法進行測試和總結,從而滿足題目的要求。

關鍵詞:Instructions;算法; 暴力方法;動態遞推法

中圖分類號:TP301文獻標識碼:A文章編號:1009-3044(2008)22-686-02

Algorithm Analysis of the Problem \"Instructions\"

MA Biao-biao

(College of Mathematical Sciences, Anhui University,Hefei 230601,China)

Abstract: ACM/ICPC is the abbreviation of ACM International Collegiate Programming Contest. This is authoritative match in the field of computer. This article aims to analyze the algorithm of a problem ofACM/ICPC. The name of this problem is \"Instructions\". Through a detailed understanding, violent means and the method of dynamic recurrence, we analyze, realize and test the original algorithm such that our algorithm meet the requirement of the problem.

Key words: Instructions; algorithm; forcible method; the method of dynamical recurrence

1 問題提出

1.1 題意分析

題目的大意是這樣的,一臺老的探測機器人,它的任務是對一塊土地進行探測,包括了四條指令,分別為“Forward”,“ Turn Left”,“ Turn Right”,“Scan”當輸入指令為“Forward”時則機器人向它所面向的方向前進一格;當輸入指令為“Turn Left”時,則機器人在原地向左轉向;當輸入指令為“Turn Right”時,則機器人在原地向右轉向;當輸入指令為“Scan”時,則機器人探測它所面向的方向的前一塊區域。

現在有一臺新的機器人代替老的機器人要完成相同的任務,但是它只有兩條指令,為“Move”,“Scan”,移動指令可以讓機器人朝它所在位置的任何一個方向移動任何的距離,探測指令則可以讓機器人探測它四周的任何一塊區域。問題是當新的機器人代替老機器人時,如何讓轉換它們之間的命令。

題目的輸出要求是找出舊的指令轉換成新的指令后,新指令最少有多少條。并且機器人要求站在同一起點,探測位置和順序都不能變。

題意如圖1所示:

圖1

圖中,數字表示老的機器人走過的路線,紅色的*表示探測的區域,紅色的數字表示探測的順序,可以看出,老的機器人如果要完成上面的命令,要執行8條指令,分別為ForwardForwardTurn LeftForwardScanTurnRight ScanForward,如果是新的機器人完成,則只關心起點位置和探測位置及探測順序,要完成上面的任務有許多種走法,我們要做的就是找出使得新的指令最少的那種方法,根據圖1,我們不難看出,當新機器人在圖中#位置進行探測時,所需要的指令都是4條,分別為Move Forward 2 Move Left 1 Scan ForwardScan Right 。探測的區域最多有1000組,并且有10次輸入。

1.2 問題模型

根據上面的問題分析,我們可以總結出該問題的問題模型:有最多1000組數據,按順序記錄了探測點的位置,我們假設則每個位置可以直接探測的站位為探測點的上、下、左、右。根據描述,我們可以記錄各個站位的坐標,然后把每個站位到后一站位(包括探測過程)所需要的步驟相加,則最后得出到各個站位,探測完成所需要的總步數的所有可能。如圖2所示。

2 算法分析

2.1 暴力方法

按照圖2的方法,對每一個掃描點都要進行4種比較,并且記錄,隨著掃描點的增加,記錄的數組越來越大,并且計算量巨大,一個掃描點為4,兩個掃描點就為16,則N個掃描點為4N種情況,而最多的有1000個掃描點如果對每個掃描點都用這種方法計算的話,程序的響應時間必定很長。所以這種方法是不可行的。

2.2 動態規劃法

前面介紹的方法,經過我們分析,效率太低,我們必須尋找其他更好的辦法來解決這道問題,由上面方法所產生的問題我們該如何解決呢?是否可以找出一個不把所有情況的列出的方法呢,下面就采用一種動態遞推的方法解決問題,如圖3所示。

從圖3可以看出,每個掃描點還是4種情況,但是當對當前掃描點進行推算時,都要和以前推算出的數值進行比較,如果比以前的數值大,則舍棄,如果比以前的數值小則把數值更新,換成小的,依次類推,當推到最后一個掃描點時,得到的數值一共有4個,即從4個方向所有最小的數值的累加。然后再比較這四個中的數值哪個最小,便得出了題目的答案。

2.2.1 算法設計

由上面的分析,我們可以寫出大體的算法:

Int top,left,right,down; //定義上下左右四種情況的數值累加

Int Number;//掃描點的個數

Input(n);//輸入數值為老語句數量

Input(char Lan);//輸入老語句

Process(int n){//記錄過程

If(Forward) go Forward;//前進一步

If(Turn Left) Turn Left;//轉向

If(Turn Right) Turn Right ;//轉向

If(Scan) note the row and columnand

Number++;//記錄行列并切Number++

}

Solution(){//解決過程

For(int i=0;i

Top(i){top=top(i-1)+top; left=left(i-1)+top; //累加前一位置到當前位置

right=right(i-1)+top; down=down(i-1)+top}//數值 為Top

Left(i){ top=top(i-1)+top; left=left(i-1)+top; //累加前一位置到當前位置

right=right(i-1)+top; down=down(i-1)+top }//數值 為Left

Right(i){ top=top(i-1)+top; left=left(i-1)+top; //累加前一位置到當前置

right=right(i-1)+top; down=down(i-1)+top }//數值 為Right

Down(i){ top=top(i-1)+top; left=left(i-1)+top; //累加前一位置到當前位置

right=right(i-1)+top; down=down(i-1)+top }//數值 為Down

}}

Sqsort(top,left,right,down){

Return min(top,left,right,down);} //選出數值最小的

StepNumber=min(top,left,right,down); //結果

Output(StepNumber);//輸出

3 算法比較和總結

根據上面的算法,寫出代碼。下面是是根據算法對程序的測試過程:

看輸入是否符合題目要求。檢查代碼的中間過程是否出現異常。

查看輸出是否符合題目要求。本題特別要注意:前個一個Case是要和后一個Case有空行的,最后一個Case是沒有空行的,并且,機器人可以重復對同一個區域進行檢查,所以不能排除前個一個掃描點和后一個掃描點的重合計算。

參考文獻:

[1] Cormen T H., Leiserson C E., Rivest R L., et al. Introduction to Algorithms[M].2版.北京:高等教育出版社,2002.

[2] 譚浩強.C程序設計[M].2版.北京:清華大學出版社,1999.

[3] 鄭莉,董淵. C++語言程序設計[M].2版.北京:清華大學出版社,2001.

[4] 嚴蔚敏,吳偉民.數據結構(C語言版)[M].北京:清華大學出版社,1997.

[5] 白宇.余數問題的兩種算法分析[J].電腦與電信,2007(5):27-28.

主站蜘蛛池模板: 玖玖精品视频在线观看| 精品国产一区二区三区在线观看| 国产真实乱人视频| 女人毛片a级大学毛片免费| 久久性妇女精品免费| 精品少妇人妻av无码久久| av一区二区无码在线| 欧美精品H在线播放| 亚洲中文字幕av无码区| 久久熟女AV| 亚洲最大综合网| 国产综合网站| 99精品国产自在现线观看| 搞黄网站免费观看| 久久人搡人人玩人妻精品| 久久亚洲AⅤ无码精品午夜麻豆| 国产精品微拍| 97国产在线观看| 先锋资源久久| 欧美啪啪网| 亚洲AⅤ无码国产精品| 女同国产精品一区二区| 国产欧美日韩免费| 国产福利在线免费| 国产区成人精品视频| jizz在线免费播放| 精品天海翼一区二区| 午夜啪啪网| 国产sm重味一区二区三区| 91九色国产porny| 99热这里只有成人精品国产| 久久精品丝袜| 国产精品七七在线播放| 国产成人成人一区二区| 日本道综合一本久久久88| 国产成人麻豆精品| 热re99久久精品国99热| 欧美人人干| 欧美精品v| 日韩一区精品视频一区二区| 一本色道久久88| 国产国产人成免费视频77777| 波多野结衣的av一区二区三区| 91探花国产综合在线精品| 亚欧美国产综合| 无码区日韩专区免费系列| 欧美色视频日本| 一区二区三区成人| 免费亚洲成人| 日本欧美在线观看| 免费又爽又刺激高潮网址| 国产三级韩国三级理| 人妻精品久久久无码区色视| 久久久波多野结衣av一区二区| 精品视频一区在线观看| 一级毛片在线直接观看| 91在线日韩在线播放| 亚洲人成日本在线观看| 久久77777| 一级做a爰片久久毛片毛片| 91青青草视频在线观看的| 欧美精品在线观看视频| 亚洲欧洲美色一区二区三区| 91小视频在线| 女人爽到高潮免费视频大全| 高清大学生毛片一级| 精品国产成人三级在线观看| 在线人成精品免费视频| 在线精品亚洲一区二区古装| 成人亚洲视频| 九九九九热精品视频| 精品国产自在现线看久久| 美女一级毛片无遮挡内谢| 亚洲AⅤ综合在线欧美一区| 欧美亚洲一区二区三区在线| 3344在线观看无码| 久久天天躁狠狠躁夜夜躁| 97在线碰| 国产第一页亚洲| 大香伊人久久| 久久中文电影| 亚洲人成色77777在线观看|