zoukankan      html  css  js  c++  java
  • 79.单词搜索

    /*
    79. 单词搜索
    给定一个二维网格和一个单词,找出该单词是否存在于网格中。
    单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。
    */
    #include<stdio.h>
    #include<malloc.h>
    #include<string.h>
    #include<stdlib.h>
    #include<math.h>
    #include<string.h>
    #include<iostream>
    #define DIR 4
    int direction[DIR][2]={{1,0},{-1,0},{0,1},{0,-1}};
    
    int dfs(char** board, int m, int n, int i,int j,char * word,int depth,int** visited){
        if(depth==strlen(word))
            return 1;
        if(i<0||i>=m||j<0||j>=n)
            return 0;
        if(visited[i][j]||board[i][j]!=word[depth])
            return 0;
        visited[i][j]=1;
        for(int k=0;k<DIR;k++){
            int new_x = i + direction[k][0];
            int new_y = j + direction[k][1];
    
            if(dfs(board,m,n,new_x,new_y,word,depth+1,visited))
                return 1;
        }
        visited[i][j]=0;
        return 0;
    }
    
    bool exist(char** board, int boardSize, int* boardColSize, char * word){
    
        int m=boardSize,n=*boardColSize,i,j;
        int** visited=(int**)calloc(sizeof(int*),m);
        for(i=0;i<m;i++){
            visited[i]=(int*)calloc(sizeof(int),n);
        }
        for(i=0;i<m;i++){
            for(j=0;j<n;j++){
                if(dfs(board,m,n,i,j,word,0,visited)){
                    printf("1
    ");
                    return 1;
                }
            }
        }
        return 0;
    }
    
    int main()
    {
        char **board=(char**)malloc(sizeof(char*)*100),str[3][4]={{'A','B','C','E'},{'S','F','C','S'},{'A','D','E','E'}};
        int i,boardSize=3,*boardColSize=(int*)malloc(sizeof(int));
        *boardColSize=4;
        char word[6]={'A','B','C','C','E','D'};
        for(i=0;i<boardSize;i++){
            board[i]=str[i];
        }
        bool rs = exist(board,boardSize,boardColSize,word);
        printf("%d
    ",rs);
        return 0;
    }
  • 相关阅读:
    klinux下JDK的安装和卸载
    MySQL设置定时任务执行事务
    Burp Suite Intruder的4种攻击类型
    Intel重大漏洞之Meltdown和Spectre
    你的Mac还安全吗
    渗透技巧——Windows系统的帐户隐藏
    Office--CVE-2017-11882【远程代码执行】
    Kali下安装Java环境
    自动化渗透测试工具(Cobalt Strike)3.1 最新破解版
    跟着安全牛大表哥学渗透
  • 原文地址:https://www.cnblogs.com/zhaohuan1996/p/12841749.html
Copyright © 2011-2022 走看看