http://noi.openjudge.cn/ch0205/1792/
希望能在我的代码基础上修改,提出有哪些优化的点,因为我要手打,不复制别人的代码.h和l表示行和列
#include <iostream>
using namespace std;
char a[105][105];
int dh[4] = { 1,-1,0,0 };
int dl[4] = {0, 0, -1, 1};
int b[105][105]={0};
int now_h, now_l, end_h, end_l,d;
bool r = 0;
int dfs(int nh,int nl) {
b[nh][nl] = 1;
if (nh==end_h&&nl==end_l) {
cout << "YES" << endl;
r = 1;
return 0;
}
for (int i = 0; i < 4; i++) {
if(nh+dh[i]>=0&&nh+dh[i]<=d&&nl+dl[i]>=0&&nl+dl[i]<=d&&!b[nh+dh[i]][nl+dl[i]]&&a[nh+dh[i]][nl+dl[i]]=='.') {
if (r) {
return 0;
}
dfs(nh + dh[i], nl + dl[i]);
}
}
b[nh][nl] = 0;
return 0;
}
int main() {
int n;
cin >> n;
while (n--) {
cin >> d;
for (int i = 0; i < d; i++) {
for (int j = 0; j < d; j++) {
b[i][j] = 0;
}
}
for (int i = 0; i < d; i++) {
for (int j = 0; j < d; j++) {
cin >> a[i][j];
}
}
cin >> now_h >> now_l >> end_h >> end_l;
dfs(now_h,now_l);
if (r == 0) {
cout << "NO" << endl;
}
r = 0;
}
return 0;
}