還算比較好理解的動態規劃
題意:這是乙個簡單的生存遊戲,你控制乙個機械人從乙個棋盤的起始點(1,1)走到棋盤的終點(n,m)。遊戲的規則描述如下:
1.機械人一開始在棋盤的起始點並有起始點所標有的能量。
2.機械人只能向右或者向下走,並且每走一步消耗一單位能量。
3.機械人不能在原地停留。
4.當機械人選擇了一條可行路徑後,當他走到這條路徑的終點時,他將只有終點所標記的能量。
如上圖,機械人一開始在(1,1)點,並擁有4單位能量,藍色方塊表示他所能到達的點,如果他在這次路徑選擇中選擇的終點是(2,4)
點,當他到達(2,4)點時將擁有1單位的能量,並開始下一次路徑選擇,直到到達(6,6)點。
我們的問題是機械人有多少種方式從起點走到終點。這可能是乙個很大的數,輸出的結果對10000取模。
解法:就是預先更新當前點能達到的所有點的方法數;
狀態轉移方程:dp[ii][jj]+=dp[i][j]; ii,jj表示從i,j能到達的點。
下面是我的ac** 250ms
#include#includeint dp[110][110];
int map[110][110];
int main(){
int t,n,m;
scanf("%d",&t);
while(t--){
memset(dp,0,sizeof(dp));
scanf("%d%d",&n,&m);
for(int i=0;i
HDU1978 記憶化搜尋
how many ways problem description 這是乙個簡單的生存遊戲,你控制乙個機械人從乙個棋盤的起始點 1,1 走到棋盤的終點 n,m 遊戲的規則描述如下 1.機械人一開始在棋盤的起始點並有起始點所標有的能量。2.機械人只能向右或者向下走,並且每走一步消耗一單位能量。3.機械...
Hdu 1978(記憶化搜尋)
hdu 1978 思路 根據a i j 表示最多能走的步數,所以列舉向下走的步數x,向右走的步數y,然後用num i j 記錄走過的路徑的個數,搜尋每次走到的地方就好了。include include includeusing namespace std typedef long long ll c...
hdu 1978 記憶化DFS搜尋)
time limit 3000 1000 ms j a others memory limit 32768 32768 k j a others total submission s 1983 accepted submission s 1213 problem description 這是乙個簡單...