社区讨论
求助 样例对的但全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 条回复,欢迎继续交流。
正在加载回复...