2 条题解
-
0
本题属于模拟题,题目很长,但是没有那么难理解。
根据题目描述直接进行模拟,下面是几个要点:
-
需要注意在代码中所使用的横纵坐标,其中 y1 等变量名不应定义为全局变量(尤其是在有万能头文件的情况下),以免出现编译错误。
-
横纵坐标等用错可能会出现通过样例但是未 AC 的情况(例如说在一处 y1 错写为 y0 等情况)
-
一个测试样例,会提问好几次,每次提问记得把数组清空!!!不然扣80分!!
-
最后就是细节决定成败了。
#include<bits/stdc++.h> using namespace std; char a[1004][1004]; int n,m,k,x,y,d; int check(int x,int y){//检查能不能走 if(x<1||x>n||y<1||y>m){ return 0; } if(a[x][y]=='x'){ return 0; } return 1; } int main(){ freopen("explore.in","r",stdin); freopen("explore.out","w",stdout); int t; scanf("%d",&t); while(t--){ bool vis[1004][1004]={}; scanf("%d%d%d%d%d%d",&n,&m,&k,&x,&y,&d); for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ cin>>a[i][j]; } } int ans=1; for(int step=0;step<k;step++){ int ax,ay; if(d==0){ ax=x; ay=y+1; } else if(d==1){ ax=x+1; ay=y; } else if(d==2){ ax=x; ay=y-1; } else if(d==3){ ax=x-1; ay=y; } //cout<<step<<" "<<x<<" "<<y<<" "<<ax<<" "<<ay<<" "<<d; vis[x][y]=1; if(check(ax,ay)){ x=ax; y=ay; if(!vis[ax][ay]){ ans++; } } else{ d=(d+1)%4; } } printf("%d\n",ans); } return 0; }
-
- 1
信息
- ID
- 1062
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 4
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者