UVa 1629 切蛋糕(記憶化搜尋)

2022-06-20 22:36:10 字數 781 閱讀 1211

題意:有乙個n行m列的網格蛋糕上有一些櫻桃。每次可以用一刀沿著網格線把蛋糕切成兩塊,並且只能直切不能拐彎。要求最後每一塊蛋糕上恰好有乙個櫻桃且切割線總長度最小。

思路:記憶化搜尋。

d[u][d][l][r]表示這個範圍內最少還需要切割多少長度。題目不難,**很容易懂。

1 #include2 #include

3 #include4 #include5

using

namespace

std;67

8const

int inf = 1000000;9

10int

n, m, t;

11int map[25][25

];12

int dp[25][25][25][25

];13

1415

int cacl(int u, int d, int l, int

r)1625}

26if (cnt == 1) return1;

27else

return0;

28}2930

int dfs(int u, int d, int l, int

r)31

4647

intmain()

4861 cout << "

case

"<< ++kase << ": "

<< dfs(0, n, 0, m) <63return0;

64 }

UVA 1629 記憶化搜尋

有乙個n行m列的蛋糕,切蛋糕,要求最後每一塊蛋糕上恰好有乙個櫻桃。問切割線總長度最小是多少?記憶化搜尋。設dp l r u d 為切割從橫向從l到r,縱向從u到d的一塊蛋糕,切割線總長度的最小值。然後不斷dfs搜尋並記錄dp值,最後dp 0 m n 0 即為所求。include include in...

習題9 3(切蛋糕) 深搜dfs 記憶化搜尋

有乙個n行m列 1 n,m 20 的網格蛋糕上有一些櫻桃。每次可以用一刀沿著網格線把蛋糕切成兩塊,並且只能夠直切不能拐彎。要求最後每一塊蛋糕上恰好有乙個櫻桃,且切割線總長度最小。tips 在dfs時可以用乙個引用代表dp,既可省力又能使 美觀 include include include incl...

uva 116 (記憶化搜尋)

題意 如圖,從左到右走,每次可以往左上 up 左 fo 左下 dn 走,當走到第一行或最後一行時可以如圖穿越。求一條權值最小的路徑,並列印字典序最小的路徑。解析 狀態轉移方程 dp i j min dp i 1 m m j 1 up dp i j 1 fo dp i 1 m j 1 dn 字典序最小...