震惊!某程序使劲爆负一
查看原帖
震惊!某程序使劲爆负一
332022
ChthollyMeow楼主2020/5/15 18:11

珂幻,太珂幻了。

在很多很多次爆-1之后,小蒟蒻终于彻底崩溃,前来求助各位大佬。

#include<bits/stdc++.h>
using namespace std;
string s[1005];
int h,w,d,r;
int stp[1005][1005][2];
bool rxz(int p,int q){
	return p>0&&q>0&&p<=h&&q<=w&&s[p][q]=='.';
}
struct chen_zhe{
	int x,y,mgc;
};
queue<chen_zhe>kkk;
const int dx[]={0,0,0,1,-1};
const int dy[]={0,1,-1,0,0};
inline void BFS(){
	while(!kkk.empty()&&stp[h][w][0]==-1&&stp[h][w][1]==-1){
		chen_zhe tmp=kkk.front();
		kkk.pop();
		for(int i=1;i<=4;i++){
			int x=tmp.x+dx[i];
			int y=tmp.y+dy[i];
			if(rxz(x,y)&&stp[x][y][tmp.mgc]==-1){
				kkk.push((chen_zhe){x,y,tmp.mgc});
				stp[x][y][tmp.mgc]=stp[tmp.x][tmp.y][tmp.mgc]+1;
				if(tmp.mgc==0&&stp[x+d][y+r][1]==-1&&rxz(x+d,y+r)){
					kkk.push((chen_zhe){x+d,y+r,1});
					stp[x+d][y+r][1]=stp[x][y][0]+1;
				}
			}
		}
	}
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>h>>w>>d>>r;
	for(int i=1;i<=h;i++){
		cin>>s[i];
	}
	memset(stp,-1,sizeof(stp));
	kkk.push((chen_zhe){1,1,0});
	stp[1][1][0]=0;
	BFS();
	if(stp[h][w][1]==-1&&stp[h][w][0]==-1){
		cout<<-1;
	}
	else{
		cout<<min(stp[h][w][0]==-1?1<<30:stp[h][w][0],stp[h][w][1]==-1?1<<30:stp[h][w][1]);
	}
	return 0;
}

据说,帮我把代码调好的大佬会被我关注哦

2020/5/15 18:11
加载中...