首页 > 其他分享 >OFF12 二维数组路径

OFF12 二维数组路径

时间:2022-10-04 19:45:52浏览次数:59  
标签:10 && int vis 二维 board 数组 OFF12 size

1.bfs没法回溯,会出现应该能到达的位置被访问
2.多起点

struct pp{
        int x;
        int y;
        int step;
        int vis[10][10];
    };
    int dx[4]={0,0,1,-1};
    int dy[4]={1,-1,0,0};
    int m;
    int n;
    int vis[10][10];
    int f=0;
    bool exist(vector<vector<char>>& board, string word) {
        
        m=board.size();
        n=board[0].size();
        for(int i=0;i<m;i++){
            for(int j=0;j<n;j++){
                if(board[i][j]==word[0]){
                    //memset(vis,0,sizeof(vis));
                    //起点位置vis设置为1之后,也会影响别的起点的dfs,所以要回溯
                    vis[i][j]=1;
                    dfs(board,word,i,j,1);
                    vis[i][j]=0;
                    if(f==1){
                        return true;
                    } 
                }
            }
        }
       return false;  
         
    }

    void dfs(vector<vector<char>>& board,string word,int x,int y,int step){
       // cout<<" dfs "<<x<<" "<<y<<" step "<<step<<endl;
        if(step==word.size()){
            f=1;
            return ;
        }
        //vis[x][y]=1;
        for(int i=0;i<4;i++){
            int nx=x+dx[i];
            int ny=y+dy[i];
            if(nx>=0&&nx<m&&ny>=0&&ny<n&&board[nx][ny]==word[step]&&vis[nx][ny]!=1){
               // cout<<board[nx][ny]<<" step "<<step<<endl;
                vis[nx][ny]=1;
                dfs(board,word,nx,ny,step+1);
                vis[nx][ny]=0;
            } 
        }
       
    }

标签:10,&&,int,vis,二维,board,数组,OFF12,size
From: https://www.cnblogs.com/lwx11111/p/16754292.html

相关文章

  • 力扣 350. 两个数组的交集 II
     力扣官方题解里的双指针+排序方法里,最后return的值是  Arrays.copyOfRange(intersection,0,index)这里为什么不能直接返回intersection数组:如果定义的数组interse......
  • 把数组排成最小的数
    问题描述:输入一个非负整数数组numbers,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组[3,32,321],则打印出这三个数字能排成的最小数......
  • 数组
    1.一维数组的创建和初始化一维数组在内存中是连续存放的数组的创建:数组是一组相同类型元素的集合。数组的创建方式:type_t  arr_name  [const_n];type_t 是指数组......
  • python生成二维码
    前言二维码在我们的生活中可以说是必不可少的,不单单是手机支付、其它很多地方也都需要扫描二维码。那么下面我们就来看看如何使用python来生成二维码、以及识别二维码。......
  • 数组循环右移2.0
    1.第一次:1,2测试点错误错误原因:忘了m大于n的情况=-=~~第二次:主函数添一个m%n就行~;PS:其他方法1:递归+将最后一个元素保存后,元素整体向前移          2:投机......
  • 【Azure 环境】Azure Resource Graph Explorer 中实现动态数组数据转换成多行记录模式
    问题描述想对Azure中全部VM的NSG资源进行收集,如果只是查看一个VM的NSG设定,可以在门户页面中查看表格模式,但是如果想把导出成表格,可以在AzureResourceGraphExplorer中查找......
  • Java手写实现链表队列和数组队列【数据结构与算法】
    packagealgorithm;/**@authorAdministrator@date2022-09-1317:50*/publicclassQueueLinked{privatestaticclassNode{Eitem;Nodenext;publicNode(Eitem,N......
  • 冒泡数组练习
    冒泡排序的思想:两两相邻的元素进行比较,并且可能的话需要交换!#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<string.h>voidbubble_sort(intarr[],intsz)/......
  • 一维数组
    #define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<string.h>intmain(){charch5[]="bit";charch6[]="'b''i''t'";printf("%d\n",strlen(ch5));......
  • 【C语言_13】多维数组
    1.什么是多维数组?   C语言中的多维数组(multidimensionalarray)其实就是使用数组作为数组的元素。n维数组的元素是n-1维数组。例如,二维数组的每个元素都是一维数......