OJ 1091 棋盤遊戲

2021-06-20 13:57:39 字數 968 閱讀 5419

#include using namespace std;

const int n=6;

const int d=4;

const int inf=100000000;

int direct[4][2] =

, , , // 右,左,上,下

};int g[n][n]=;

int visit[n][n]=;

int mincost=0;

bool checkinbound(int x,int y)

}int sx,sy,ex,ey;

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

mincost=inf;

dfs(sx,sy,ex,ey,0,1);

cout<題目描述:有乙個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

九度OJ 1091棋盤遊戲

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

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

dfs利用遞迴,不必使用多餘的資料結構,實現簡單。但要注意剪枝。bfs借助佇列,往往在求最優解時使用。總是能找到最優解,某些情況下也要剪枝。這兩種方法根據具體問題來使用。以此題為例,dfs和bfs都可求解。由於是求最優解,用bfs更為直接。由於此題的不確定性,必須要考慮所有可能情況,結合剪枝。題目1...

九度 1091 棋盤遊戲

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