比赛 |
20160323 |
评测结果 |
TTAAATTTTT |
题目名称 |
定向越野 |
最终得分 |
30 |
用户昵称 |
KZNS |
运行时间 |
7.001 s |
代码语言 |
C++ |
内存使用 |
0.51 MiB |
提交时间 |
2016-03-23 20:48:33 |
显示代码纯文本
//KZNS
#include <fstream>
using namespace std;
//
ifstream fin ("adven.in");
ofstream fout ("adven.out");
//
int N;
int gp[203][203];
bool ud[203][203] = {0};
int ed = 0x7fffffff;
//
void rin() {
fin >> N;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= N; j++)
fin >> gp[i][j];
}
void DFS(int x, int y, int mn, int mx) {
mn = min(mn, gp[x][y]);
mx = max(mx, gp[x][y]);
if (mx - mn >= ed)
return;
if (x == N && y == N) {
ed = min (ed, mx - mn);
return;
}
ud[x][y] = true;
if (x + 1 <= N && (!ud[x + 1][y]))
DFS(x + 1, y, mn, mx);
if (x - 1 > 0 && (!ud[x - 1][y]))
DFS(x - 1, y, mn, mx);
if (y + 1 <= N && (!ud[x][y + 1]))
DFS(x, y + 1, mn, mx);
if (y - 1 > 0 && (!ud[x][y - 1]))
DFS(x, y - 1, mn, mx);
ud[x][y] = false;
}
//
int main() {
rin();
DFS(1, 1, 0x7fffffff, -0x7fffffff);
fout << ed;
return 0;
}
//UBWH