• 筆趣閣 > 其他小說 > 假裝自己是學霸 > 第一百二十二章 全國青少年信息學奧林匹克競賽

    第一百二十二章 全國青少年信息學奧林匹克競賽(2 / 2)

    這不是理所當然的嗎?

    她看向了第二個題目。

    題目2:在一個N??M的方格陣中,每一個格子賦予一個數(即權值),規定每次移動時只能向上或者向右,現試找一條路勁,使其從左下角至右上角所經過的權值之和最大。

    解析:在這種情況下.....

    一步一步看下來。

    蘇牧倒也沒覺得有什么難的,只不過是一些取極值的問題。

    但是,當他翻到后面的經典習題和解析的時候,整個人都不好了。

    【經典習題】在8×8方格的棋盤上,從任意指定方格出發,為馬尋找一條走遍棋盤每一格并且只經過一次的一條路徑。

    解析:首先這是一個搜索問題,運用深度優先搜索進行求解,算法如下:

    ⒈輸入初始位置坐標x,y;

    ⒉步驟c:

    如果c>64輸出一個解,返回上一步驟c--

    (x,y)←c

    計算(x,y)的八個方位的子結點,選出那些可行的子結點

    循環遍歷所有可行子結點,步驟c++重復2

    顯然⑵是一個遞歸調用的過程,大致如下(C++程序解析):

    #defineN8

    voiddfs(intx,inty,intt)

    {

    inti,tx,ty;

    if(t>N*N)

    {

    output_solution();//輸出一個解

    return;

    }

    for(i=0;i<8;i++)

    {

    tx=hn[.x;//hn[]保存八個方位子結點

    ty=hn[.y;

    s[tx][ty]=t;

    dfs(tx,ty,t+1);//遞歸調用

    s[tx][ty]=0;

    }

    }

    這樣做是完全可行的,因為它輸入的是全部解。

    但是馬遍歷當8×8時解是非常之多,用天文數字形容也不為過,這樣一來我們的求解的過程就非常慢,并且出一個解的時間也會也非常慢。

    當我們在每個結點對其子結點進行選取的時候,優先選擇‘出口’最小的進行搜索,‘出口’的意思是在這些子結點中它們的可行子結點的個數,也就是‘孫子’結點越少的越優先跳。

    如果優先選擇出口多的子結點,那出口少的子結點就會越來越多,很可能出現‘死’結點

    這樣對下面的搜索純粹是徒勞,這樣就會浪費很多無用的時間。

    反過來如果每次都優先選擇出口少的結點跳,那出口少的結點就會越來越少,這樣跳成功的機會就更大一些。

    .......

    蘇牧:“。。。。”

    他的腦海中再次緩緩的出現了一堆問號。

    完全沒想到居然會有這么大的跨越。

    看著僅僅只有一個小題,卻是密密麻麻的解析,蘇牧突然明白了為什么數學奧賽參加的人那么多,信息學奧賽參加的人卻那么少。

    這東西,確定是適合青少年做的??

    不會禿頂嗎??

    ......

    PS:因為要開始上網課了...要準備的東西挺多的,后面也會慢慢忙起來,所以更新時間偶爾會些變化,但是每天兩更應該可以保持住...

    PS2:弱弱的求幾張推薦票。

    最新小說: 仙俠:從箭術橫推神魔世界! 修仙從復制開始 重生悍卒:開局官府發媳婦 大魏瘋王 躺平修仙:道侶修煉我變強 西游:長生仙族從五行山喂猴開始 重生紅樓之庶子賈環 歪師邪徒 世子無雙 托身白刃里,浪跡紅塵中
    性欧美乱熟妇xxxx白浆