zoukankan      html  css  js  c++  java
  • [itint5]单词游戏

    http://www.itint5.com/oj/#36

    此题在数据大些,而且全是A的情况下会超时(因为要匹配到很后面才false)。通过利用数组本身作为visited标示,而且使用string引用,得意通过。

    bool find(vector<vector<char> > &grid, string &pattern, int i, int j, int k) {
        if (k == pattern.length()) return true;
        int m = grid.size();
        int n = grid[0].size();
        if (i < 0 || i >= m || j < 0 || j >= n) return false;
        if (pattern[k] == grid[i][j] && grid[i][j] != '#') {
            char c = grid[i][j];
            grid[i][j] = '#';
            if (find(grid, pattern, i-1, j, k+1) ||
                find(grid, pattern, i+1, j, k+1) || 
                find(grid, pattern, i, j-1, k+1) || 
                find(grid, pattern, i, j+1, k+1)) {
                grid[i][j] = c;
                return true;
            } else {
                grid[i][j] = c;
                return false;
            }
        } else {
            return false;
        }
    }
    
    bool exists(vector<vector<char> > &grid, string pattern) {
        int m = grid.size();
        if (m == 0) return false;
        int n = grid[0].size();
        if (n == 0) return false;
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                if (find(grid, pattern, i, j, 0)) return true;
            }
        }
        return false;
    }
    

      

  • 相关阅读:
    基本的Web控件二
    基本的Web控件一
    centos更改默认语言
    nginx优化配置
    使用nginx的proxy_cache做网站缓存
    centos7配置笔记
    redis批量删除
    Linq常用操作
    MVC ViewData和ViewBag[转]
    Transact-SQL的除法问题
  • 原文地址:https://www.cnblogs.com/lautsie/p/3526310.html
Copyright © 2011-2022 走看看