3221225477越界 求助
查看原帖
3221225477越界 求助
1487472
fyc201908楼主2024/11/3 14:28
#include<bits/stdc++.h>
using namespace std;
int main(){
	int t;
	cin>>t;
	vector<int> ans(t);
	for(int i=0;i<t;i++)
		ans[i]=0;
	for(int i=1;i<=t;i++){
		int n,m,k,x,y,d;
		cin>>n>>m>>k>>x>>y>>d;
		char ex[1000][1000];
		bool flag[1000][1000];
		memset(ex,'0',sizeof(ex));
		memset(flag,false,sizeof(flag));
		for(int j=0;j<n;j++){
			for(int k=0;k<m;k++){
				cin>>ex[j][k];
			}
		}
		int a=x-1,b=y-1;
		for(int j=0;j<k;j++){
			bool isrun=true;
			bool isturn_right=true;
			if(d==0 && b+1<m && ex[a][b+1]=='.' && isrun==true){
				b++;
				flag[a][b]=true;
				isrun=false;
				isturn_right=false;
			}
			else if(d==1 && a+1<m && ex[a+1][b]=='.' && isrun==true){
				a++;
				flag[a][b]=true;
				isrun=false;
				isturn_right=false;
			}
			else if(d==2 && b-1>=0 && ex[a][b-1]=='.' && isrun==true){
				b--;
				flag[a][b]=true;
				isrun=false;
				isturn_right=false;
			}
			else if(d==3 && a-1>=0 && ex[a-1][b]=='.' && isrun==true){
				a--;
				flag[a][b]=true;
				isrun=false;
				isturn_right=false;
			}
			if(isturn_right==true) d=(d+1)%4;
		}
		for(int j=0;j<n;j++){
			for(int k=0;k<m;k++){
				if(flag[j][k]==true) ans[i]++;
			}
		}
	}
	for(int i=0;i<t;i++){
		cout<<ans[i]<<"\n";
	}
	return 0;
}

样例过不去

2024/11/3 14:28
加载中...