zoukankan      html  css  js  c++  java
  • 搜索+回溯

    79(单词搜索)

    class Solution {
    public:
        int m,n,d[4][2]={{-1,0},{0,1},{1,0},{0,-1}};
        vector<vector<bool>> visited;
        
        bool inarea(int x,int y){
            return x>=0 && x<m && y>=0 && y<n; 
        }
        
        bool searcharea(const vector<vector<char>> &board,const string& word,int index,int startx,int starty){
            if(index==word.size()-1)
                return board[startx][starty] == word[index];
                
            if(board[startx][starty]==word[index]){
                visited[startx][starty]=true;
                for(int i=0;i<4;i++){
                    int newx=startx+d[i][0];
                    int newy=starty+d[i][1];
                    if(inarea(newx,newy) && !visited[newx][newy] && searcharea(board,word,index+1,newx,newy) )
                        return true;
                }
                visited[startx][starty] =false;
            }
            return false;
        }
        
        bool exist(vector<vector<char>>& board, string word) {
            m=board.size();
            n=board[0].size();
            
            visited=vector<vector<bool>>(m,vector<bool>(n,false));
                
            for(int i=0;i<board.size();i++)
                for(int j=0;j<board[i].size();j++)
                    if(searcharea(board,word,0,i,j))
                        return true;
            
            return false;
        }
    };

    200(连通岛屿数量,floodfill算法)

    class Solution {
    public:
        int m,n,d[4][2]={{-1,0},{1,0},{0,1},{0,-1}};
        vector<vector<bool>> visited;
        
        bool inarea(int x,int y){
            return x>=0 && x<m && y>=0 && y<n;
        }
        
        void dfs(vector<vector<char>> &grid,int x,int y){
            
            visited[x][y]=true;
            for(int i=0;i<4;i++){
                int newx=x+d[i][0];
                int newy=y+d[i][1];
                if(inarea(newx,newy)&&!visited[newx][newy]&&grid[newx][newy]=='1')
                    dfs(grid,newx,newy);
            }
                
            return;
        }
        
        int numIslands(vector<vector<char>>& grid) {
            m=grid.size();
            if(m==0)
                return 0;
            n=grid[0].size();
            
            visited=vector<vector<bool>>(m,vector<bool>(n,false));
                
            int res=0;
            for(int i=0;i<m;i++)
                for(int j=0;j<n;j++)
                    if(grid[i][j]=='1'&&!visited[i][j]){
                        res++;
                        dfs(grid,i,j);
                    }
            return res;
        }
    };

    130

    417

  • 相关阅读:
    javascript传值和页面跳转传值
    EXT使用方法汇总(5)——布局
    ext中ArrayStore,JsonStore,XmlStore的用法
    Ext学习系列(9) Ext.data.HttpProxy
    第一章 .NET体系结构
    session相关知识的收集于整理
    struts+spring+mybatis框架整合
    JBoss7 两种运行模式介绍
    Java获取本机mac地址
    JBoss7快速入门
  • 原文地址:https://www.cnblogs.com/darklights/p/11676123.html
Copyright © 2011-2022 走看看