社区讨论

求助 样例对的但全wa

P1518[USACO2.4] 两只塔姆沃斯牛 The Tamworth Two参与者 2已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@m2uod256
此快照首次捕获于
2024/10/30 00:41
去年
此快照最后确认于
2024/10/30 14:15
去年
查看原帖
思路有参考题解
CPP
#include <bits/stdc++.h>
using namespace std;
const int N = 205;
int fx, fy, ft;
int cx, cy, ct;
int dx[5] = {-1, 0, 1, 0};
int dy[5] = {0, 1, 0, -1};
char a[N][N];
bool vis[N][N], f[25][25][5][25][25][5];
void dfs(int step){
	if (fx == cx && fy == cy){
		cout << step;
		exit(0);
	}
	if (f[fx][fy][ft][cx][cy][ct]){
		cout << 0;
		exit(0);
	}
	f[fx][fy][ft][cx][cy][ct] = 1;
	if (vis[fx + dx[ft]][fy + dy[ft]]) fx += dx[ft], fy += dy[ft];
	else{
		ft++;
		if (ft == 4) ft = 0;
	}
	if (vis[cx + dx[ct]][cy + dy[ct]]) cx += dx[ct], cy += dy[ct];
	else{
		ct++;
		if (ct == 4) ct = 0;
	}
	dfs(step + 1);
}
int main(){
	memset(vis, 0, sizeof vis);
	for (int i = 1; i <= 10; ++i){
		for (int j = 1; j <= 10; ++j){
				cin >> a[i][j];
				if (a[i][j] != '*'){
					vis[i][j] = 1;
				}
				if (a[i][j] == 'F'){
					fx = i;
					fy = j;
				}
				if (a[i][j] == 'C'){
					cx = i;
					cy = j;
				}
		}
		cout << endl;
	}
	memset(f, 0, sizeof f);
	dfs(0);
	return 0;
}

回复

1 条回复,欢迎继续交流。

正在加载回复...