求助,时间超时
  • 板块学术版
  • 楼主__Cby___
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/7/19 14:06
  • 上次更新2023/11/3 08:54:47
查看原帖
求助,时间超时
734049
__Cby___楼主2023/7/19 14:06

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;
}
2023/7/19 14:06
加载中...