求助,玄关
  • 板块题目总版
  • 楼主alscry
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/10/27 14:23
  • 上次更新2024/10/27 16:05:18
查看原帖
求助,玄关
1032607
alscry楼主2024/10/27 14:23

p11228,蒟蒻纯暴力模拟,有个地方考场里没问题,在家里就有问题了

#include<bits/stdc++.h>
using namespace std;
int n;
char map1[1006][1006];
int zx,zy,sp,xx,xy,fx,cnt;
int vis[1006][1006];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++){
		cin>>zx>>zy>>sp;
		cin>>xx>>xy>>fx;
		memset(vis,0,sizeof(vis));
		for(int j=1;j<=zx;j++){
			for(int k=1;k<=zy;k++){
				cin>>map1[j][k];
			}
		}
		vis[xx][xy]=1;
		for(int j=1;j<=sp;j++){
			if(fx==0){
				if(map1[xx][xy+1]=='.'){
					vis[xx][xy+1]=1;
					xy+=1;
					continue;
				}
				else if(map1[xx][xy+1]=='x'){
					fx=(fx+1)%4;
					continue;
				}
				else{
					fx=(fx+1)%4;
					continue;
				}
			}
			if(fx==1){
				if(map1[xx+1][xy]=='.'){
					vis[xx+1][xy]=1;
					xx+=1;
					continue;
				}
				else if(map1[xx+1][xy]=='x'){
					fx=(fx+1)%4;
					continue;
				}
				else{
					fx=(fx+1)%4;
					continue;
				}
			}
			if(fx==2){
				if(map1[xx][xy-1]=='.'){
					vis[xx][xy-1]=1;
					xy-=1;
					continue;
				}
				else if(map1[xx][xy-1]=='x'){
					fx=(fx+1)%4;
					continue;
				}
				else{
					fx=(fx+1)%4;
					continue;
				}
			}
			if(fx==3){
				if(map1[xx-1][xy]=='.'){
					vis[xx-1][xy]=1;
					xx-=1;
					continue;
				}
				else if(map1[xx-1][xy]=='x'){
					fx=(fx+1)%4;
					continue;
				}
				else{
					fx=(fx+1)%4;
					continue;
				}
			}
		}
		for(int j=1;j<=zx;j++){
			for(int k=1;k<=zy;k++){
				if(vis[j][k]==1){
					cnt++;
				}
			}
		}
		cout<<cnt<<endl;
	}
	return 0;
}
2024/10/27 14:23
加载中...