60pts求调!!!
查看原帖
60pts求调!!!
681558
Weizhuo_Zhao楼主2024/6/7 18:15
#include <bits/stdc++.h>
using namespace std;

short a[55][2] = {};
int T, ans = 1e9;
int x1, y1_, x2, y2;
void dfs(int x, int y, int k, int c);

int main() {
	cin >> x1 >> y1_ >> x2 >> y2;
	cin >> T;
	char c;
	for (int i = 1; i <= T; i++) {
		cin >> c;
		if (c == 'E')
			a[i][0] = 1;
		else if (c == 'S')
			a[i][1] = -1;
		else if (c == 'W')
			a[i][0] = -1;
		else if (c == 'N')
			a[i][1] = 1;
	}
	dfs(x1, y1_, 1, 0);
	if (ans == 1e9)
		ans = -1;
	cout << ans;
	return 0;
}

void dfs(int x, int y, int k, int c) {
//	cout << x << ' ' << y << ' ' << k << ' ' << c << '\n';
	if (x == x2 && y == y2) {
		ans = min(ans, c);
		return;
	}
	if (k > T)
		return;
	a[k - 1][0] = 0;
	a[k - 1][1] = 0;
	dfs(x + a[k][0], y + a[k][1], k + 1, c + 1);
	dfs(x, y, k + 1, c);
}
2024/6/7 18:15
加载中...