联通快(dfs暴力)全球变暖

#include <iostream>
#define maxn 105
using namespace std;
char mapp[maxn][maxn];
bool book[maxn][maxn];
int n,res;
int next[4][2]={{0,1},{1,0},{0,-1},{-1,0}};
bool check(int i,int j)
{
    for(int k=0;k<=3;k++)
    {
        int tx=i+next[k][0];
        int ty=j+next[k][1];
        if(tx<0||ty<0||tx>=n||ty>=n)
            continue;
        if(mapp[tx][ty]=='.')
        {
            return false;
        }
    }
    return true;
}
void dfs(int x,int y)
{
    for(int k=0;k<=3;k++)
    {
        int tx=x+next[k][0];
        int ty=y+next[k][1];
        if(tx<0||ty<0||tx>=n||ty>=n)
            continue;
        if(mapp[tx][ty]=='#')
        {
            mapp[tx][ty]='.';
            dfs(tx,ty);
        }
    }
}
int main()
{

    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>mapp[i];
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(mapp[i][j]=='#'&&check(i,j)==false)
                book[i][j]=true;
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(book[i][j]==true)
                mapp[i][j]='.';
        }
    }
    for(int i=0;i<n;i++)
    {
        for(int j=0;j<n;j++)
        {
            if(mapp[i][j]=='#')
            {
                mapp[i][j]='.';
                dfs(i,j);
                res++;
            }
        }
    }
    cout << res << endl;
    return 0;
}
/*
.......
.##....
.##....
....##.
..####.
...###.
.......
*/

尽管提供的引用[^1]与HBase相关,而当前问题是关于全球变暖问题的C++ DFS算法实现或解决方案,这两者之间并无直接关联。然而,可以基于DFS算法设计一种解决全球变暖问题的方法。 以下是针对全球变暖问题的一个假设场景下的DFS实现方案: ### 假设情景 考虑一个城市网络图模型,在该模型中,节点表示不同区域的城市,边则代表这些城市之间的交通连接情况。某些城市的工业排放量较高,从而加剧了全球变暖现象。通过DFS遍历整个城市网络图,找到所有高污染源并标记它们以便采取措施减少碳排放。 #### C++ 实现 ```cpp #include <iostream> #include <vector> using namespace std; // 定义最大污染阈值 const int POLLUTION_THRESHOLD = 50; void dfs(int node, vector<vector<int>>& adjacencyList, vector<bool>& visited, const vector<int>& pollutionLevels) { // 如果已经访问过,则跳过 if (visited[node]) return; // 标记为已访问 visited[node] = true; // 判断当前节点是否超过污染阈值 if (pollutionLevels[node] >= POLLUTION_THRESHOLD) { cout << "High Pollution Detected at City: " << node << endl; } // 遍历相邻节点 for(auto neighbor : adjacencyList[node]){ if(!visited[neighbor]){ dfs(neighbor, adjacencyList, visited, pollutionLevels); } } } int main(){ // 创建邻接表表示城市间的连接关系 int nCities = 6; // 总共有六个城市作为例子 vector<vector<int>> adjacencyList(nCities); // 添加一些假定的边到邻接表里 adjacencyList[0].push_back(1); adjacencyList[0].push_back(2); adjacencyList[1].push_back(3); adjacencyList[1].push_back(4); adjacencyList[2].push_back(5); // 初始化各城市的污染水平数据 vector<int> pollutionLevels = {70, 80, 90, 10, 20, 30}; // 各个城市对应的污染指数 // 记录哪些城市已经被访问过了 vector<bool> visited(nCities, false); // 对每一个未被访问过的城市执行dfs搜索 for(int i=0;i<nCities;i++){ if(!visited[i]){ dfs(i, adjacencyList, visited, pollutionLevels); } } return 0; } ``` 上述代码展示了如何利用深度优先搜索来识别具有高水平污染物的城市节点。此方法可以帮助政府机构速定位主要污染源头,并制定相应的减排政策。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值