• 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;
    }
  • 相关阅读:
    会计基础模拟练习2
    Foxmail邮箱最新应用指南
    会计基础第一节内容概述
    会计基础一
    如何解决Linux中Tomcat启动失败
    Linux 打开端口方法(防火墙操作)
    @PathVariable为空时指定默认值
    Thymeleaf 遍历Map 输出Key Value
    thymeleaf中的th:each用法
    Linux后台执行脚本 &与nohup
  • 原文地址:https://www.cnblogs.com/zhaohuan1996/p/12841749.html
Copyright © 2020-2023  润新知