4.5.3宝岛探险//DFSearch(又称着色法)

来源:互联网 发布:大数据融合 编辑:程序博客网 时间:2024/05/01 02:04
#include<iostream>using namespace std;int a[51][51];int book[51][51],n,m,sum;void dfs(int x,int y){//定义一个方向数组int next[4][2]={{0,1},//向右走{1,0},//向下走{0,-1},//向左走     {-1,0}//向上走};int k,tx,ty; //枚举4个方向 for(k=0;k<=3;k++){//计算下一步的坐标tx=x+next[k][0];ty=y+next[k][1];//判断是否越界if(tx<1||tx>n||ty<1||ty>m){continue;//退出此次循环 } //判断是否是陆地 if(a[tx][ty]>0&&book[tx][ty]==0){sum++;book[tx][ty]=1;//标记这个点已经走过dfs(tx,ty);//开始尝试下一个点}} return;}  int main(){int i,j,startx,starty;cout<<"请输入n和m,n为行,m为列:"<<endl;cin>>n>>m;//读入起点坐标cout<<"请输入起点坐标:"<<endl;cin>>startx>>starty;//读入迷宫cout<<"请输入迷宫矩阵:"<<endl;for(i=1;i<=n;i++){for(j=1;j<=m;j++){cin>>a[i][j];}} book[startx][starty]=1;sum=1;//从降落的位置开始尝试dfs(startx,starty); //最后输出这岛屿的大小 cout<<endl<<"岛屿大小为:"<<sum<<endl; getchar();return 0;} 

0 0
原创粉丝点击