本文主要是介绍蓝桥云课—全球变暖,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1.全球变暖 - 蓝桥云课 (lanqiao.cn)
#include<bits/stdc++.h>
using namespace std;
string mz[1000];
int n,ans,dir[4][2]={{-1,0},{0,1},{1,0},{0,-1}};
struct node{int x,y;
};
bool vis[1000][1000];
bool check(int x,int y)
{return x>=0&&x<n&&y>=0&&y<n;
}
void bfs(int i,int j)
{queue<node>q;node start={i,j};vis[i][j]=true;q.push(start);bool res=false;while(!q.empty()){node now=q.front();q.pop();if(!res){res=true;for(int i=0;i<4;i++){int nx=dir[i][0]+now.x;int ny=dir[i][1]+now.y;if(check(nx,ny)&&mz[nx][ny]=='.'){res=false;break;}}}for(int i=0;i<4;i++){int nx=dir[i][0]+now.x;int ny=dir[i][1]+now.y;if(check(nx,ny)&&mz[nx][ny]=='#'&&!vis[nx][ny]){q.push({nx,ny});vis[nx][ny]=true;}}}if(!res) ans++;
}
int main(){ans=0;cin>>n;for(int i=0;i<n;i++)cin>>mz[i];for(int i=0;i<n;i++)for(int j=0;j<n;j++){if(mz[i][j]=='#'&&!vis[i][j])//是陆地 就找岛bfs(i,j);}cout<<ans<<'\n';
}
如果碰到一个没被访问的陆地就用bfs找他在的那块岛,看有没有不会被淹没的一块,然后全都标记访问过,然后就这样。
这篇关于蓝桥云课—全球变暖的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!