感觉身体被掏空
查看原帖
感觉身体被掏空
1094797
Myl100313楼主2024/11/24 22:25

写了20分钟,样例还是错的。

#include<bits/stdc++.h>
using namespace std;
int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
int T;
int n,m,k;
char jungle[1500][1500];
bool vis[1500][1500];
int x,y,d;
int ans=0;
void dfs(int x,int y,int d,int rest)
{
	if(rest==0) return ; 
    int heng=x+dx[d],shu=y+dy[d];
    if(heng>=1&&heng<=n&&shu>=1&&shu<=m&&jungle[heng][shu]=='.')
    {
	    vis[heng][shu]|=1;
		dfs(heng,shu,d,rest-1);
	}
	else 
	{
	   dfs(x,y,(d+1)%4,rest-1);
	   vis[x][y]|=1;	
	}

}
int main()
{
    scanf("%d",&T);
    while(T--)
    {
    	ans=0;
    	memset(vis,false,sizeof vis);
    	memset(jungle,0,sizeof jungle);
    	scanf("%d%d%d",&n,&m,&k);
    	scanf("%d%d%d",&x,&y,&d);
    	for(int i=1;i<=n;i++)
    	  for(int j=1;j<=m;j++)
    	    cin>>jungle[i][j];
    	dfs(x,y,d,k);
    	for(int i=1;i<=n;i++)
    	  for(int j=1;j<=m;j++)
    	    ans+=vis[i][j];
    	cout<<ans<<endl;
	}
	return 0;
}

2024/11/24 22:25
加载中...