N M bulbs(想法 01取反路徑)

2021-09-12 16:33:12 字數 649 閱讀 9440

原題:

題意:

起點為(1,1),終點為(n,m),每個格仔非黑即白,1表示黑。現在有一條路徑,走過的格仔會反轉,每個格仔可以走多次,問是否存在一種走法走到終點後全白。

解析:

分析格仔

1 2 3

4 5 6

7 8 9

1-2-1-2,3-6-3-6,9-8-9-8,即我可以不改變狀態的情況下兩個兩個的移動,比方說我需要改變3這個位置,那麼1-2-1-2,3,6-9-6-9,即中間插一步即可。設需要轉換的1的個數為x,那麼滿足要求的步數應該為2n+

x2n+x

2n+x

。從(1,1)到(n,m)需要的步數為(n+m-1),所以當x與(n+m-1)同奇偶就可以,否則不可以。

#include

using namespace std;

intmain()

}if((n+m-1)

%2==ct%2)

printf

("yes\n");

else

printf

("no\n");

}}

01揹包路徑回溯

以此題為例 01揹包有選取和不選取兩種操作,每次記錄選取的操作在乙個新的陣列中。回溯時則減下每次加上的,就是過來時的路徑。1 include 2 using namespace std 3 define n 37 4intn 5 int p 40 a 40 c 40 m 40 g 40 6 intp...

動態規劃之路徑規劃01

前言 雖然自己做過幾個動態規劃的題目,看過題解後也能做出幾個二維的路徑問題,主要是對dfs進行優化。但是還是有點知其然不知其所以然的感覺,有兩個月左右沒做dp,現在讓我寫對乙個二維路徑dp都困難。所以開這個專題系統學習dp。感謝 宮水三葉 本筆記根據三葉大佬的刷題日記進行學習記錄。動態規劃解決什麼樣...

記錄路徑的01揹包問題

在01揹包問題中,求出最優解並記錄揹包內物品,動態規劃的方法求其問題,最核心的公式為f i j max,在考慮當前第i個物品是否放入的時候就是比較 前面的i 1個物品放在容量為j的揹包中時揹包中總價值與 前面的i 1個物品放在容量為j weight i 的揹包中並加上當前第i個的價值value i ...