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

2021-07-26 10:46:30 字數 627 閱讀 6502

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

tips:在dfs時可以用乙個引用代表dp,既可省力又能使**美觀

#include

#include

#include

#include

using

namespace

std;

#define n 25

int m,n,k,dp[n][n][n][n],map[n][n],kase=0;

//dp(x,y,xlen,ylen)表示在以(x,y)為左上角,xlen,ylen為邊長的區域內的切割最小值

void init()

}int dfs(int x,int y,int xlen,int ylen)else

else

//沒有就捨棄這種情況

return d=2000;

return d;

}int main()

開始做動態規劃以來最流暢的一題,思路清晰,而且一次ac,爽快o(∩_∩)o~

ヽ(✿゚▽゚)ノ✧(≖ ◡ ≖✿)

dfs 深搜 模板

關於深度優先搜尋的效率問題,有多種解決方法。最具有通用性的是剪枝 prunning 也就是去除沒有用的搜尋分支。有可行性剪枝和最優性剪枝兩種。int mx 4 向上下左右四個方向移動 0,1 0,1 1,0 1,0 int my 4 bool check int x,int y 判斷是否滿足條件的子...

深搜剪枝 生日蛋糕

時間限制 1 sec 記憶體限制 128 mb 提交 14 解決 8 提交 狀態 討論版 命題人 add cy 7月17日是mr.w的生日,acm thu為此要製作乙個體積為n 的m層生日蛋糕,每層都是乙個圓柱體。設從下往上數第i 1 i m 層蛋糕是半徑為ri,高度為hi的圓柱。當i m時,要求r...

深搜(2) 尋路 蛋糕

include include include include using namespace std struct rode int minlen 1 30,tallen,talcost 當前最優路徑長度,正在走的路的長度,花銷 vector cityway 105 cityway i 是從i有路...