| 比赛 | 
    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