DFS和BFS 解棋盤遊戲(九度OJ 1091)

2021-08-27 10:34:32 字數 2318 閱讀 4967

dfs利用遞迴,不必使用多餘的資料結構,實現簡單。但要注意剪枝。

bfs借助佇列,往往在求最優解時使用。總是能找到最優解,某些情況下也要剪枝。

這兩種方法根據具體問題來使用。

以此題為例,dfs和bfs都可求解。

由於是求最優解,用bfs更為直接。

由於此題的不確定性,必須要考慮所有可能情況,結合剪枝。

題目1091:棋盤遊戲

時間限制:1 秒

記憶體限制:32 兆

特殊判題:否

提交:616

解決:151

題目描述:有乙個6*6的棋盤,每個棋盤上都有乙個數值,現在又乙個起始位置和終止位置,請找出乙個從起始位置到終止位置代價最小的路徑:

1、只能沿上下左右四個方向移動

2、總代價是沒走一步的代價之和

3、每步(從a,b到c,d)的代價是c,d上的值與其在a,b上的狀態的乘積

4、初始狀態為1

每走一步,狀態按如下公式變化:(走這步的代價%4)+1。

輸入:第一行有乙個正整數n,表示有n組資料。

每組資料一開始為6*6的矩陣,矩陣的值為大於等於1小於等於10的值,然後四個整數表示起始座標和終止座標。

輸出:輸出最小代價。

樣例輸入:

1

1 1 1 1 1 1

1 1 1 1 1 1

1 1 1 1 1 1

1 1 1 1 1 1

1 1 1 1 1 1

1 1 1 1 1 1

0 0 5 5

樣例輸出:

23

bfs**:

#include #include using namespace std;

struct node

;int ans;

int map[6][6];

int opt[6][6][4]; //記錄最優解,剪枝條件。4中狀態都要記錄

node start;

int ex, ey;

int cnt = 0;

int dir[4][2] = ,,, };

queueq;

void bfs(node n)

}} }

}int main()

start.sum = 0;

start.statu = 1;

ans = 100000;

cin >> start.x >> start.y >> ex >> ey;

bfs(start);

for (int i = 0; i < 4; i++)

//cout << cnt << endl;

cout << ans << endl;

} return 0;

}

language: c++

result: accepted

time:10 ms

memory:1516 kb

dfs**;

#include using namespace std;

int map[6][6];

int sx,sy,ex,ey,ans;

int cnt = 0;

int dir[4][2] = ,,, };

bool visit[6][6];

void dfs(int x,int y,int sum,int statu)

for(int i=0; i<4; i++)}}

}int main()

cin >> sx >> sy >> ex >> ey;

ans = 1000000;

dfs(sx,sy,0,1);

//cout << cnt << endl;

cout << ans << endl;

}return 0;

}

language: c++

result: accepted

time:10 ms

memory:1512 kb

九度 1091 棋盤遊戲

題目描述 有乙個6 6的棋盤,每個棋盤上都有乙個數值,現在又乙個起始位置和終止位置,請找出乙個從起始位置到終止位置代價最小的路徑 1 只能沿上下左右四個方向移動 2 總代價是沒走一步的代價之和 3 每步 從a,b到c,d 的代價是c,d上的值與其在a,b上的狀態的乘積 4 初始狀態為1 每走一步,狀...

九度OJ 1091棋盤遊戲

有乙個6 6的棋盤,每個棋盤上都有乙個數值,現在又乙個起始位置和終止位置,請找出乙個從起始位置到終止位置代價最小的路徑 1 只能沿上下左右四個方向移動 2 總代價是沒走一步的代價之和 3 每步 從a,b到c,d 的代價是c,d上的值與其在a,b上的狀態的乘積 4 初始狀態為1 每走一步,狀態按如下公...

DFS和BFS的複雜度和其他習題

3.若將n個頂點e條弧的有向圖採用鄰接表儲存,則拓撲排序演算法的時間複雜度為o n e 4.g是乙個非連通無向圖,共有22條邊,則該圖至少有 9 個頂點。全連通圖的定點 n 和邊數 m 滿足 m n n 1 2,那麼邊 m 22 時,圖 g n n 1 2 22 解得 n 8 而且,當 n 7 時,...