20分求助
查看原帖
20分求助
1067988
Raymond2014楼主2024/11/10 09:16

代码如下:

#include <bits/stdc++.h>
using namespace std;
int main(){
    //freopen("explore.in","r",stdin);
    //freopen("explore.out","w",stdout);
    int t;
    cin>>t;
    while(t--){
        int n,m,k,x,y,d,cnt=1;
        cin>>n>>m>>k>>x>>y>>d;
        int a[1001][1001]={},vis[1001][1001]={};
        for(int i=1;i<=n;i++){
            for(int j=1;j<=m;j++){
                char c;
                cin>>c;
                if(c=='x') a[i][j]=1;
            }
        }
        for(int i=1;i<=k;i++){
            if(x<=0 || x>n || y<=0 || y>m || a[x][y]==1) d=(d+1)%4;
            if(d==0){
            	if(a[x][y+1]==0 && x<=n  && x>0 && y<=m && y>0) y++;
            	else d=(d+1)%4;
			}
            if(d==1){
            	if(a[x+1][y]==0 && x<=n  && x>0 && y<=m && y>0) x++;
            	else d=(d+1)%4;
			}
            if(d==2){
            	if(a[x][y-1]==0 && x<=n  && x>0 && y<=m && y>0) y--;
            	else d=(d+1)%4;
			}
            if(d==3){
            	if(a[x-1][y]==0 && x<=n  && x>0 && y<=m && y>0) x--;
            	else d=(d+1)%4;
			}
            if(a[x][y]==0 && x<=n  && x>0 && y<=m && y>0 && vis[x][y]==0) cnt++,vis[x][y]=1;
        }
        cout<<cnt<<endl;
    }
    return 0;
}

那位大神能帮我看一下?谢谢!

2024/11/10 09:16
加载中...