70分求助,玄关
查看原帖
70分求助,玄关
865834
Wuski楼主2023/12/26 13:03

记录

#include <bits/stdc++.h>
using namespace std;

int a[114][514], vis[114][514], dd[4][2] = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};
int n, m, t;
int sx, sy, fx, fy, zx, zy;
int ans = 0;
void init(int n, int m) {
	for (int i = 1; i <= n; i++) {
		for (int j = 1; j <= m; j++) {
			a[i][j] = 1;
		}
	}
}
void dfs(int x, int y) {
	if (x == fx && y == fy) {
		ans++;
		return;
	} else {
		for (int i = 0; i < 4; i++) {
			int xx, yy;
			xx = dd[i][0] + x;
			yy = dd[i][1] + y;
			if (vis[xx][yy] == 0 && a[xx][yy] == 1) {
				vis[xx][yy] = 1; //走
				dfs(xx, yy);
				vis[xx][yy] = 0;
			}
		}
	}
}
int main() {
	cin >> n >> m >> t;
	cin >> sx >> sy >> fx >> fy;
	init(n, m);
	for (int i = 1; i <= t; i++) {
		cin >> zx >> zy;
		a[zx][zy] = 0;
	}
	dfs(sx, sy );
	cout << ans;
	return 0;
}

有点不懂,这个深搜怎么了??

2023/12/26 13:03
加载中...