警示后人
查看原帖
警示后人
1268907
uncle_steve楼主2024/11/7 18:11

在每组测试数据后记得重置vis数组。

100pts->0pts

0pts代码:

#include<bits/stdc++.h>
using namespace std;
int t,n,m,k,x,y,d;
char a[2001][2001];
bool vis[2001][2001]={false};
int main()
{
//	freopen("explore.in","r",stdin);
//	freopen("explore.out","w",stdout);
	cin>>t;
	while(t--){
		cin>>n>>m>>k;
		cin>>x>>y>>d;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>a[i][j];
			}
		}
		vis[x][y]=true;
		long long ans=0;
		for(int i=1;i<=k;i++){
			if(d==0&&1<=x&&x<=n&&1<=y+1&&y+1<=m&&a[x][y+1]=='.'){
				vis[x][y+1]=true;
				y++;
			}
			else if(d==1&&1<=x+1&&x+1<=n&&1<=y&&y<=m&&a[x+1][y]=='.'){
				vis[x+1][y]=true;
				x++;
			} 
			else if(d==2&&1<=x&&x<=n&&1<=y-1&&y-1<=m&&a[x][y-1]=='.'){
				vis[x][y-1]=true;
				y--;
			} 
			else if(d==3&&1<=x-1&&x-1<=n&&1<=y&&y<=m&&a[x-1][y]=='.'){
				vis[x-1][y]=true;
				x--;
			} 
			else{
				d=(d+1)%4;
			}
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				if(vis[i][j]==true&&a[i][j]!='x'){
					ans++;
				} 
			}
		}
		cout<<ans<<endl;
	}
	
	return 0;
}

100pts代码:

#include<bits/stdc++.h>
using namespace std;
int t,n,m,k,x,y,d;
char a[2001][2001];
bool vis[2001][2001]={false};
int main()
{
//	freopen("explore.in","r",stdin);
//	freopen("explore.out","w",stdout);
	cin>>t;
	while(t--){
		cin>>n>>m>>k;
		cin>>x>>y>>d;
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				cin>>a[i][j];
			}
		}
		vis[x][y]=true;
		long long ans=0;
		for(int i=1;i<=k;i++){
			if(d==0&&1<=x&&x<=n&&1<=y+1&&y+1<=m&&a[x][y+1]=='.'){
				vis[x][y+1]=true;
				y++;
			}
			else if(d==1&&1<=x+1&&x+1<=n&&1<=y&&y<=m&&a[x+1][y]=='.'){
				vis[x+1][y]=true;
				x++;
			} 
			else if(d==2&&1<=x&&x<=n&&1<=y-1&&y-1<=m&&a[x][y-1]=='.'){
				vis[x][y-1]=true;
				y--;
			} 
			else if(d==3&&1<=x-1&&x-1<=n&&1<=y&&y<=m&&a[x-1][y]=='.'){
				vis[x-1][y]=true;
				x--;
			} 
			else{
				d=(d+1)%4;
			}
		}
		for(int i=1;i<=n;i++){
			for(int j=1;j<=m;j++){
				if(vis[i][j]==true&&a[i][j]!='x'){
					ans++;
				} 
			}
		}
		cout<<ans<<endl;
		memset(vis,false,sizeof(vis));
	}
	
	return 0;
}

前后只多了memset那行代码,我真服了……

2024/11/7 18:11
加载中...