1 条题解

  • 1

    题目给的很明白,甚至方向的 44 种情况都给你了,模拟即可。

    #include<bits/stdc++.h>
    using namespace std;
    char mar[1005][1005];
    bool vis[1005][1005];
    void solve(int n,int m,int k,int x,int y,int d){
    	memset(vis,0,sizeof(vis));
    	int cnt=1;
    	vis[x][y]=1;
    	for(int i=1;i<=n;i++){
    		for(int j=1;j<=m;j++){
    			scanf(" %c",&mar[i][j]);//cnm 没清空缓冲区,我恨空白字符
    
    		}
    	}
    	for(int i=0;i<k;i++){
    		int tx=x,ty=y;
    		if(d==0)	ty++;
    		if(d==1)	tx++;
    		if(d==2)	ty--;
    		if(d==3)	tx--;
    		if((1<=tx&&tx<=n)&&(1<=ty&&ty<=m)&&(mar[tx][ty]!='x')){
    			x=tx,y=ty;
    			if(vis[x][y]==0){
    				cnt++;
    				vis[x][y]=1;
    			}
    		}else{
    			d=(d+1)%4;
    		}
    	}
    	fflush(stdout);	
    	printf("%d\n",cnt);
    	return;
    }
    int main(){
    	//freopen("explore.in","r",stdin);
    	//freopen("explore.out","w",stdout);
    	int t,n,m,k,x,y,d;
    	scanf("%d",&t);
    	while(t--){
    		scanf("%d %d %d %d %d %d",&n,&m,&k,&x,&y,&d);
    		solve(n,m,k,x,y,d);
    	}
    	return 0;
    }
    

    警示后人/乐子欣赏/公开处刑

    scanf 输入字符时,记得清空缓冲区,否则会导致读入空白字符导致满江红(全 WA)。今年 HA 有个 sb 在本题用 scanf 没清缓冲区导致:

    • T2 爆零。
    • 1= -> 2=。
    • 300 pts -> 200pts。
    • py 市第一 -> py 市第 nn
    • 1

    信息

    ID
    573
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者