動態規劃的簡單例題(2)

2021-09-10 07:21:02 字數 749 閱讀 4753

d點有乙個過河卒,需要走到目標b點。卒行走規則:可以向下、或者向右。同時在棋盤上的任一點有乙個對方的馬(如下圖的c點),該馬所在的點和所有跳躍一步可達的點稱為對方馬 的控制點,例如下圖的c點上的馬可以控制9個點(圖中的p1,p2,……p8和c),卒不能通過對方馬的控制點。

棋盤用座標表示,a點(0,0)、b點(n,m)c點(cx,cy)(0

在題目中,要想到達b點,最後一步要麼從b點上一點下來,要麼從b點左一點向右走。這點很重要

由此我們可以得出遞推式:

f(i.j) =  f(i-1,j) + f(i,j-1)

#includeint n,m;//棋盤大小

int board[30][30];//棋盤

int a[8] = ;

int b[8] = ;//馬的位移

bool control[30][30];//用來記錄馬是否是馬的控制點

int dp[30][30];//表示走到點(i,j)的方案數

int cx,cy;

void solve()

}dp[0][0] = 1;//此時方案數為1

for(int i=0;i<=n;i++)//注意棋盤如果是五行五列有效位置是0~5}}

printf("%d",dp[n][m]);

}int main()

動態規劃例題

題目描述 有一條很長的數軸,一開始你在0的位置。接下來你要走n步,第i步你可以往右走ai或者bi。問n步之後,0到m的每個位置,能不能走到?輸入格式 第一行,兩個整數n,m。接下來n行,每行兩個整數ai,bi。輸出格式 一行,一共m 1個數,每個數都是0或1表示能否走到,數字之間不用空格隔開。樣例輸...

《動態規劃》 ACM 動態規劃例題詳解

描述 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 圖1 圖1給出了乙個數字三角形。從三角形的頂部到底部有很多條不同的路徑。對於每條路徑,把路徑上面的數加起來可以得到乙個和,你的任務就是找到最大的和。注意 路徑上的每一步只能從乙個數走到下一層上和它最近的左邊的那個數或者右邊的那個數。輸...

動態規劃及其動態規劃經典例題

動態規劃是最重要 最經典的演算法之一,學好動態規劃對我們十分重要,掌握動態規劃對解決某些問題會起到事半功倍的效果。特點 可以把原始問題劃分為一系列子問題 求解每個子問題僅一次,並將其結果儲存到乙個表中,以後用到時直接訪問,不重複計算,節省時間。自底向上地計算 適用範圍 原問題可以分為多個相關子問題,...