zoukankan      html  css  js  c++  java
  • 蓝桥杯2018 B组 第九题

    #include <bits/stdc++.h>
    #define M 1005
    using namespace std;
    
    
    int n;
    char map1[M][M];
    bool vis[M][M];
    int dir[4][2] = {{1,0},{-1,0},{0,1},{0,-1}};
    
    void dfs(int x,int y)
    {
    	vis[x][y] = 1;
    	for(int i = 0; i < 4; i++)
    	{
    		int dx = x + dir[i][0];
    		int dy = y + dir[i][1];
    		if(dx >= 0 && dy >=0 && dx < n && dy < n && !vis[dx][dy] && map1[dx][dy] == '#')
    			dfs(dx,dy);
    	}
    }
    
    int main()
    {
    	cin>>n;
    	int begin_count = 0,end_count = 0;
    	for(int i = 0; i < n; i++)
    		for(int j = 0; j < n; j++)
    			cin>>map1[i][j];
    	
    	/*统计开始前岛屿个数*/
    	for(int i = 0; i < n; i++)
    		for(int j = 0; j < n; j++)
    		{
    			if(map1[i][j] == '#' && !vis[i][j])
    				begin_count++,dfs(i,j);
    		}
    	
    	/*淹没过程*/ 
    	memset(vis,0,sizeof(vis));
    	for(int i = 1; i < n-1; i++)
    		for(int j = 1; j < n-1; j++)
    		{
    			if(map1[i][j] == '#'){
    				if((map1[i+1][j]=='.'||map1[i-1][j]=='.'||map1[i][j+1]=='.'||map1[i][j-1]=='.'))
    				map1[i][j] = '1';
    			}
    		}
    		
    	/*统计结束后岛屿个数*/
    	memset(vis,0,sizeof(vis));
    	for(int i = 0; i < n; i++)
    		for(int j = 0; j < n; j++)
    		{
    			if(map1[i][j] == '#' && !vis[i][j])
    				end_count++,dfs(i,j);
    		}
    		
    	cout<<begin_count - end_count<<"
    ";
    	return 0;
    }
    

    比较简单的搜索题目,

  • 相关阅读:
    (二十三)、int与integer的区别
    (二十一)、Java序列化与反序列化
    (二十)、MVC设计思想的优缺点
    (十九)、列出自己常用的JDK包
    (十八)、Session与Cookie区别
    win10 下安装laravel
    冒泡排序
    常用php正则表达式
    AE网站
    AE压缩网站
  • 原文地址:https://www.cnblogs.com/stul/p/10356167.html
Copyright © 2011-2022 走看看