救我
查看原帖
救我
855831
woshinidegou楼主2025/2/5 11:49

谁能救我

#include<bits/stdc++.h>
using ll=long long;
using db=double;
using ldb=long double;
using namespace std;
char a[1005][1005];
ll a1[1005][1005];
ll xx[4]={0,0,1,-1};
ll yy[4]={-1,1,0,0};
struct w{
	ll x,y;
};
int main(){
	ll n,k;
	cin>>n>>k;
	for(ll i=0;i<n;i++){
		for(ll j=0;j<n;j++){
			cin>>a[i][j];
		}
	}queue<w> q;
	q.push({0,0});
	a1[0][0]=0;
	ll h=1;
	while(q.size()){
		w m=q.front();
		q.pop();
		for(ll i=0;i<4;i++){
			if(m.x==n-1 && m.y==n-1){
				cout<<a1[m.x][m.y];
				return 0;
			}ll x1=m.x+xx[i],y1=m.y+yy[i];
			if(!(a[x1][y1]=='#' || (a[x1][y1]=='X' && h<=1)) && x1<n && x1>=0 && y1<n && y1>=0){
				q.push({x1,y1});
				if(a[x1][y1]=='%') h+=k;
				if(h>1) h--;
				a1[x1][y1]=a1[m.x][m.y]+1;
			}
		}
	}return 0;
}
2025/2/5 11:49
加载中...