leetcode_主题空间

一、题目

 

 

二、算法

class Solution {
public:
    int ans=0,f=1;
    void dfs(vector<string>& grid,int i,int j,char c){
        //碰到走廊,f标记为0
        if(i<0||i>=grid.size()||j<0||j>=grid[0].length()||grid[i][j]=='0'){f=0;return;}
        //不是同一个主题空间或者已经成为别的主题空间
        if(grid[i][j]!=c || grid[i][j]=='6')return;
        
        grid[i][j]='6';//遍历过的点都记作'6'
        ans++;
        //四个方向的深搜
        dfs(grid,i+1,j,c);
        dfs(grid,i-1,j,c);
        dfs(grid,i,j+1,c);
        dfs(grid,i,j-1,c);
    }
    int largestArea(vector<string>& grid) {
        int n=grid.size(),m=grid[0].length(),ma=0;
        for(int i=1;i<n-1;++i)    
            for(int j=1;j<m-1;++j){
                //初始化
                ans=0;f=1;
                dfs(grid,i,j,grid[i][j]);
                if(f)ma=max(ans,ma);
            }
        return ma;
    }
};

三、分析

              主要是通过递归搜索字符函数,结果如下,上面的代码是使用别人代码的结果。

 

 

        但是具体的改进我也不知道怎么做。

posted @ 2021-10-27 20:47  星光夜  阅读(77)  评论(0)    收藏  举报