MAP打表递归搜索10分求调
  • 板块P1605 迷宫
  • 楼主leave_for
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/4/26 23:22
  • 上次更新2024/4/27 10:35:54
查看原帖
MAP打表递归搜索10分求调
1093564
leave_for楼主2024/4/26 23:22

WA了#2、#7、#8

#include<iostream>
#include<map>
using namespace std;
const int jmp[4][2] = {
	{0, 1},
	{0, -1},
	{1, 0},
	{-1, 0}
};
int dfs(int x, int y, int fx, int fy, int n, int m, map<pair<int, int>, bool>* p) {
	if (x == fx && y == fy) {
		delete p;
		return 1;
	}
	int ans = 0;
	for (int i = 0; i < 4; i++) {
		int nx = x + jmp[i][0], ny = y + jmp[i][1];
		if (nx > 0 && ny > 0 && nx <= n && ny <= m && !(*p)[make_pair(nx, ny)]) {
			map<pair<int, int>, bool>* np = new map<pair<int, int>, bool>(*p);
			(*np)[make_pair(nx, ny)] = 1;
			ans += dfs(nx, ny, fx, fy, n, m, np);
		}
	}
	delete p;
	return ans;
}
int main() {
	int n, m, t;
	pair<int, int> s, f, b[10];
	map<pair<int, int>, bool> *p=new map<pair<int, int>, bool>;
	cin >> n >> m >> t >> s.first >> s.second >> f.first >> f.second;
	for (int i = 0; i < t; i++) {
		cin >> b[i].first >> b[i].second;
		(*p)[b[i]] = true;
	}
	cout << dfs(s.first, s.second, f.first, f.second, n, m, p);
	return 0;
}

大佬们帮帮本蒟蒻吧(T_T)

2024/4/26 23:22
加载中...