首页 > 其他分享 >营救

营救

时间:2022-08-25 17:35:36浏览次数:45  
标签:int xxx yyy cin ktt kt 营救

广搜,挨个遍历,记录起点和终点,下一个的起点等于终点+1

#include<bits/stdc++.h>
using namespace std;
int xx[4]={0,0,1,-1},yy[4]={1,-1,0,0};
int kt,s=0,kts,ktts;
char c;
int i,j,n,a[1200][1200],x1,x2,y2,ktt,x[1100000],y[1100000];
int main(){
cin>>n;
for(i=1;i<=n;i++){
for(j=1;j<=n;j++){
cin>>c;
a[i][j]=c-'0';
}
}
cin>>x[1]>>y[1];
cin>>x2>>y2;
kt=1;
ktt=1;
while(1){
s++;
kts=kt;
ktts=ktt;
for(i=ktts;i<=kts;i++){
for(j=0;j<4;j++){
int xxx=x[i]+xx[j];
int yyy=y[i]+yy[j];
if(xxx==x2&&yyy==y2){
cout<<s;
return 0;
}
if(xxx<=n&&xxx>=1&&yyy>=1&&yyy<=n&&a[xxx][yyy]==0){
kt++;
a[xxx][yyy]=1;
x[kt]=xxx;
y[kt]=yyy;
}
}
}
ktt=kts+1;
}
}

标签:int,xxx,yyy,cin,ktt,kt,营救
From: https://www.cnblogs.com/wangjunlong9948/p/16624995.html

相关文章

  • 5.营救
    码学堂同第一题,最短路径的板子题这种题的一般思路:广搜:1.初始状态标记(初始元素入队,初始元素vis,ans,cnt等数据初始化)2.进入while(!q.empty())(1)取出队首元素放入now(不要忘记......
  • 营救
    先把起点入队。从队首向上下左右拓展节点,如果拓展出的某个节点在边界内未曾访问且是海洋则将这个节点入队,将其标记为已访问,用队首节点更新新节点到起点路程,拓展完后将队首......