奇偶剪枝(簡陋的講解證明)

2021-08-21 20:24:15 字數 1176 閱讀 7045

奇偶剪枝

【問題描述:】

給定乙個n*m的迷宮以及起點和終點,迷宮中有一些障礙無法穿過,問能否不重複也不停留地在剛好一共走t步出迷宮。

【問題分析:】

先來看下這張:

也就是說當要走偶數步而規定的步數是奇數,或者要走奇數步而規定的步數是偶數,都是不可能到達的,如果要想到達,則要走的步數和規定的步數的奇偶性應該一致。又可知,奇偶性一致的兩個數的差或者和都是偶數。(下面有大用處)(引自

由此,可以得出如下式子:

設t為起點到終點的步數,起點為s,終點為e,s->e的最短距離為p,那麼有t-p為偶,則在t步恰好到達終點e.

下面來對上面做出證明。

要想在第t步到達終點那麼有t = p + extra

整理得t - p = extra.

證明extra為偶

下面來證extra為偶,分四種情況(結合上圖):

起點s為0,終點e為0,此時p為偶。

起點s為1,終點e為1,此時p為偶。

起點s為0,終點e為1,此時p為奇。

起點s為1,終點e為0,此時p為奇。

p為偶(起點終點相同)

p為奇(起點終點不同)

先走隨便走p到達點m,因為p為偶,所以m與s相同且與e相同,將m作為新的起點s1,終點為e,則t1 = t - p,式子變為t1 = extra + p1;

重複上述步驟,直到tn = pn(pn為當起點為sn終點為e時的最短路徑長度),即第n步到達點e。得出式子extra = 偶數 + 偶數 + 偶數+。。。+偶數 =>偶數。

先隨便走p到達點m,因為p為奇數,所以m與s不同,與e相同,將m作為新的起點s1,終點為e,t1 = t - p,問題轉為了第一種情況。得出式子extra = 偶數 + 偶數 + 偶數+。。。+偶數 =>偶數。

設t為起點到終點的步數,起點為s,終點為e,s->e的最短距離為p,那麼有t-p為偶,則在t步恰好到達終點e。

一道奇偶剪枝的題目

DFS所用到的奇偶剪枝

把矩陣看成如下形式 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 0 1 從為 0 的格仔走一步,必然走向為 1 的格仔 從為 1 的格仔走一步,必然走向為 0 的格仔 即 從 0 走向 1 必然是奇數步,從 0 走向 0 必然是偶數...

DFS中的奇偶剪枝學習筆記

編輯 現假設起點為 sx,sy 終點為 ex,ey 給定t步恰好走到終點,s e 如圖所示 豎走,橫走,轉彎 易證abs ex sx abs ey sy 為此問題類中任意情況下,起點到終點的最短步數,記做step,此處step1 8 s e 如圖,為一般情況下非 最短路徑的任意走法舉例,step2 ...

組合數奇偶性的判斷(附證明)

learning 方法一 計算一下,然後看它的奇偶性 但是這個時間以及資料範圍上都不允許 方法二對於給定c n,m 檢查n!中2因子的個數與m!和 n m 中2因子個數和的關係,假設n 中2因子個數為a,m 中2因子個數為b,n m 中2因子個數為c,則顯然有a b c 並且當a b c時,一定為奇...