洛谷 P3956 棋盤

2021-09-29 02:08:29 字數 1136 閱讀 6472

js省裡冬令營夏令營講深搜都講到了

今天上午測試的題,15分,因為剪枝沒剪乾淨,少了個等於號,於是本來能拿到的分也沒拿到,唉

主要思想dfs+剪枝

#include

using

namespace std;

int m,n;

//依照題目

int a[

107]

[107];

//存顏色

int vis[

107]

[107];

//存來到這個點最少花的金幣

int dx[4]

=;//增量陣列

int dy[4]

=;//增量陣列

int ans=

0x3f3f3f3f

;//答案

void

dfs(

int x,

int y,

int mon,

bool use)

//就是下面這個等於號

if(mon>=vis[x]

[y])

return

;//如果到了這個點,但所花金幣已經大於等於最小代價了,捨去

else vis[x]

[y]=mon;

//不然更新最小代價

if(mon>ans)

return

;//如果已經比當前最小答案大了,捨去

//按理說,這裡應該也添乙個等於號,但是沒被卡到

for(

int i=

0;i<

4;i++

)else

if(use==

false

)else

continue

;//現在不能用魔法}}

return;}

intmain()

dfs(1,

1,0,

false);

//從七點出發

if(ans!=

0x3f3f3f3f

)cout

else cout<<-1

return0;

}

以後大家寫程式一定要注意等於號,還有mn有沒有反

洛谷 P3956 棋盤

找了找發現這週做的竟然都是水題,那麼就把不知道多久以前的一道水題發出來吧。p3956 棋盤 有乙個m m的棋盤,棋盤上每乙個格仔可能是紅色 黃色或沒有任何顏色的。你現在要從棋盤的最左上角走到棋盤的最右下角。任何乙個時刻,你所站在的位置必須是有顏色的 不能是無色的 你只能向上 下 左 右四個方向前進。...

洛谷 P3956 棋盤(DFS)

有乙個m m的棋盤,棋盤上每乙個格仔可能是紅色 黃色或沒有任何顏色的。你現在要從棋盤的最左上角走到棋盤的最右下角。任何乙個時刻,你所站在的位置必須是有顏色的 不能是無色的 你只能向上 下 左 右四個方向前進。當你從乙個格仔走向另乙個格仔時,如果兩個格仔的顏色相同,那你不需要花費金幣 如果不同,則你需...

洛谷 P3956 棋盤題解

題目 p3956 棋盤 但這個魔法不能連續使用,而且這個魔法的持續時間很短,也就是說,如果你使用了這個魔法,走到了這個暫時有顏色的格仔上,你就不能繼續使用魔法。include include include using namespace std const int maxn 5000 const ...