社区讨论
为啥爆零,求调
P1189[COI 2001] SEARCH参与者 2已保存回复 3
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 3 条
- 当前快照
- 1 份
- 快照标识符
- @m0aze5bb
- 此快照首次捕获于
- 2024/08/26 20:35 2 年前
- 此快照最后确认于
- 2025/11/04 22:21 4 个月前
第一个数据已经用fc对比过了是一摸一样的,为什么还是0分
CPP#include<bits/stdc++.h>
using namespace std;
int n,m,q;
bool a[55][55];
int s,t;
int f[1010];
int sx[]= {0,-1,0,1,0};
int sy[]= {0,0,-1,0,1};
bool v[1010][55][55];
void dfs(int s,int t,int k) {
if(v[k][s][t]) return ;
v[k][s][t]=true;
if(k==0) return ;
while(true) {
s+=sx[f[k]];
t+=sy[f[k]];
if(!a[s][t]) break;
dfs(s,t,k-1);
}
}
int main() {
// freopen("P1189_1.in","r",stdin);
// freopen("6.txt","w",stdout);
scanf("%d%d",&n,&m);
char ch;
for(int i=1; i<=n; i++) {
getchar();
for(int j=1; j<=m; j++) {
ch=getchar();
if(ch=='.') a[i][j]=true;
if(ch=='*') a[i][j]=true,s=i,t=j;
if(ch=='X') a[i][j]=false;
}
}
scanf("%d",&q);
string x;
for(int i=q; i>=1; i--) {
cin>>x;
if(x=="NORTH") f[i]=1;
if(x=="WEST") f[i]=2;
if(x=="SOUTH") f[i]=3;
if(x=="EAST") f[i]=4;
}
dfs(s,t,q);
for(int i=1; i<=n; i++) {
for(int j=1; j<=m; j++) {
if(v[0][i][j]) cout<<'*';
else if(a[i][j]) cout<<'.';
else cout<<'X';
// cout<<a[i][j];
}
puts("");
}
return 0;
}
回复
共 3 条回复,欢迎继续交流。
正在加载回复...