AC但是不理解
查看原帖
AC但是不理解
1344661
inscape楼主2024/11/23 21:30

AC代码:

#include<bits/stdc++.h>
using namespace std;
int t;
int main(){
	cin>>t;
	while(t--){
		char mapss[1001][1001]={};
		long long n,m,k,dx,dy,d,ans;
		cin>>n>>m>>k>>dx>>dy>>d;
		bool maps[1001][1001]={};
		maps[dx][dy]=true;
		ans=1;
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				cin>>mapss[i][j];
		while(k--){
			long long ddx=dx,ddy=dy;
			if(d==0) dy++;
			if(d==1) dx++;
			if(d==2) dy--;
			if(d==3) dx--;
			if(dx<1||dx>n||dy<1||dy>m||mapss[dx][dy]=='x'){
				dx=ddx,dy=ddy;
				d=(d+1)%4;
			}
			else if(!maps[dx][dy]){
				ans++;
				maps[dx][dy]=true;
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}

50pts代码:

#include<bits/stdc++.h>
using namespace std;
int t;
int main(){
	cin>>t;
	while(t--){
		char mapss[1001][1001]={};
		long long n,m,k,dx,dy,d,ans;
		cin>>n>>m>>k>>dx>>dy>>d;
		bool maps[1001][1001]={};
		ans=1;
		for(int i=1;i<=n;i++)
			for(int j=1;j<=m;j++)
				cin>>mapss[i][j];
		while(k--){
			long long ddx=dx,ddy=dy;
			if(d==0) dy++;
			if(d==1) dx++;
			if(d==2) dy--;
			if(d==3) dx--;
			if(dx<1||dx>n||dy<1||dy>m||mapss[dx][dy]=='x'){
				dx=ddx,dy=ddy;
				d=(d+1)%4;
			}
			else if(!maps[dx][dy]){
				ans++;
				maps[dx][dy]=true;
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}

这两段代码之间就差了个

maps[dx][dy]=true;

结果相差50分,为什么?

2024/11/23 21:30
加载中...