求助细节
  • 板块题目总版
  • 楼主Jerry_heng
  • 当前回复2
  • 已保存回复2
  • 发布时间2022/8/9 14:37
  • 上次更新2023/10/27 16:17:54
查看原帖
求助细节
763878
Jerry_heng楼主2022/8/9 14:37

各位巨佬,为什么P3818的第9个数据点会错

附上代码

#include<bits/stdc++.h>
using namespace std;
int n,m,x,y,a[20000010][4],f[4][2]={{1,0},{0,-1},{-1,0},{0,1}};
bool b[10001][10001][2];
char ch;
int main(){
	cin>>n>>m>>x>>y;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=m;j++){
			cin>>ch;
			if(ch=='#'){
				b[i][j][0]=1;
				b[i][j][1]=1;
			}
		}
	a[1][0]=1;
	a[1][1]=1;
	a[1][2]=0;
	a[1][3]=1;
	b[1][1][1]=1;
	int head=0,tail=1;
	while(head<tail){
		head++;
		int xx=a[head][0]+x;
		int yy=a[head][1]+y;
		if(xx>0&&yy>0&&xx<=n&&yy<=m&&a[head][3]&&!b[xx][yy][1]){
			tail++;
			a[tail][3]=0;
			a[tail][0]=a[head][0]+x;
			a[tail][1]=a[head][1]+y;
			a[tail][2]=a[head][2]+1;
			b[a[head][0]+x][a[head][1]+y][0]=1;
		}
		for(int i=0;i<4;i++){
			int xx=a[head][0]+f[i][0];
			int yy=a[head][1]+f[i][1];
			if(xx==n&&yy==m){
				cout<<a[head][2]+1;
				return 0;
			}
			if(!b[xx][yy][a[head][3]]&&xx>0&&xx<=n&&yy>0&&yy<=m){
				tail++;
				b[xx][yy][a[head][3]]=1;
				a[tail][2]=a[head][2]+1;
				a[tail][0]=xx;
				a[tail][1]=yy;
				a[tail][3]=a[head][3];
			}
		}
	}
//	for(int i=1;i<=head;i++)
//		cout<<a[i][0]<<" "<<a[i][1]<<" "<<a[i][2]<<" "<<a[i][3]<<endl;
	cout<<-1;
	return 0;
}
2022/8/9 14:37
加载中...