样例全过,递交0分,为什么?
查看原帖
样例全过,递交0分,为什么?
911978
2328wangyibo楼主2024/10/26 16:41
#include<bits/stdc++.h>
using namespace std;
const int N=1e3+10;
int n,d,m,T,k;
int dx[]={0,1,0,-1};
int dy[]={1,0,-1,0};
long long sum;
int vis[N][N];
char mp[N][N];
long long cnt=0;
long long dfs(int xx,int yy){
	if(k==0) return sum;
	k--;
	if(xx+dx[d]<=n&&xx+dx[d]>=1&&yy+dy[d]<=m&&yy+dy[d]>=1&&mp[xx+dx[d]][yy+dy[d]]=='.'){
		if(vis[xx+dx[d]][yy+dy[d]]==0){
			sum++;
		}
		vis[xx+dx[d]][yy+dy[d]]=1;
		return dfs(xx+dx[d],yy+dy[d]);
	}
	else{
		d=((d+1)%4);
		return dfs(xx,yy);
	}
}
int main(){
	freopen("T.in","r",stdin);
	freopen("T.out","w",stdout);
	cin>>T;
	while(T--){
		cin>>n>>m>>k;
		int xx,yy;
		cin>>xx>>yy>>d;
		vis[xx][yy]=1;
		sum++;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>mp[i][j];
			}
		}
		long long t=dfs(xx,yy);
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				if(vis[i][j]==1)
					cnt++;
			}
		}
		memset(vis,0,sizeof(vis)); 
		cout<<cnt<<endl;
		cnt=0;
	}
	
	return 0;
}
2024/10/26 16:41
加载中...