前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >矩阵中的路径

矩阵中的路径

作者头像
名字是乱打的
发布于 2021-12-22 07:01:33
发布于 2021-12-22 07:01:33
1.4K00
代码可运行
举报
文章被收录于专栏:软件工程软件工程
运行总次数:0
代码可运行
题目描述

请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。

思路

回溯法: 对于此题,我们需要设置一个判断是否走过的标志数组,长度和矩阵大小相等

我们对于每个结点都进行一次judge判断,且每次判断失败我们应该使标志位恢复原状即回溯

judge里的一些返回false的判断:

  • 如果要判断的(i,j)不在矩阵里
  • 如果当前位置的字符和字符串中对应位置字符不同
  • 如果当前(i,j)位置已经走过了

否则先设置当前位置走过了,然后判断其向上下左右位置走的时候有没有满足要求的.

最后如果上面所有判断都没返回true,则最后恢复原状态

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public boolean hasPath(char[] matrix, int rows, int cols, char[] str)
    {
        int[] flags=new int[matrix.length]; //用1标志走过
        for(int i=0;i<rows;i++){
            for(int j=0;j<cols;j++){
                boolean res = helper(matrix, rows, cols, i, j, 0, str, flags);
                if (res) return true;
            }
        }
        return false;
    }
    //k指当前匹对的字串下标
    public boolean helper(char[]matrix,int rows,int cols,int i,int j,int k,char[]str,int[]flag){
        int curr=i*cols+j;
        if (i<0||i>=rows||j<0||j>=cols||flag[curr]==1||matrix[curr]!=str[k]) return false;
        if (k==str.length-1) return true;

        flag[curr]=1;

        if (helper(matrix,rows,cols,i+1,j,k+1,str,flag)||helper(matrix,rows,cols,i-1,j,k+1,str,flag)||
                helper(matrix,rows,cols,i,j+1,k+1,str,flag)||helper(matrix,rows,cols,i,j-1,k+1,str,flag)
        )return true;

        flag[curr]=0;
        return false;
    }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/12/16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Code-Breaking中的两个Python沙箱
这是发表在跳跳糖上的文章https://www.tttang.com/archive/1294/,如需转载,请联系跳跳糖。
phith0n
2023/10/29
3380
Code-Breaking中的两个Python沙箱
巅峰极客及DASCTF7月赛复现
这里的话是传入了两个参数,然后将其赋值到一个类中,进行了序列化同时用了b函数进行处理,看一下有关类的
用户9691112
2023/09/04
3070
巅峰极客及DASCTF7月赛复现
code-breaking2018
这题十分简短精悍,应该是需要找到一个在[a-z0-9_]之外的字符放置在函数前而不影响函数的调用,简单传入:
HhhM
2022/08/10
1.4K0
code-breaking2018
SEKAICTF 2022 Web Writeup
Bottle Poem Come and read poems in the bottle. No bruteforcing is required to solve this challenge
ek1ng
2023/01/02
1.2K0
SEKAICTF 2022 Web Writeup
2022蓝帽杯wep-WP
web一天白打工,这次的蓝帽几乎就是取证大爹们的主场,web题一共只有两道,一道题简单的fastjson1.2.62反序列化加一道读内存和pickle反序列化,思路都不复杂,但属实是被环境问题整麻了…不管怎么说还是记录一下吧
h0cksr
2023/05/18
3410
django 1.8 官方文档翻译: 13-9-1 如何使用会话
Django 提供对匿名会话的完全支持。其会话框架让你根据各个站点的访问者存储和访问任意数据。它在服务器端存储数据并抽象Cookie 的发送和接收。Cookie 包含会话的ID —— 不是数据本身(除非你使用基于Cookie 的后端)。
ApacheCN_飞龙
2022/11/27
1.3K0
【Python全栈100天学习笔记】Day45 Cookie和Session介绍及使用
如今,一个网站如果不通过某种方式记住你是谁以及你之前在网站的活动情况,失去的就是网站的可用性和便利性,继而很有可能导致网站用户的流式,所以记住一个用户(更专业的说法叫用户跟踪)对绝大多数Web应用来说都是必需的功能。
天道Vax的时间宝藏
2022/04/02
9170
【Python全栈100天学习笔记】Day45 Cookie和Session介绍及使用
安全研究 | 从MicroStrategy入手发现Facebook的XSS漏洞
该篇文章讲述了作者围绕Facebook采用的第三方应用MicroStrategy Web SDK,经源码分析发现存在于Facebook网站中的两个反射型漏洞(rXSS),在前一篇文章中,作者就已经在MicroStrategy身上发现了SSRF漏洞收获了$30000的奖励。这里我们继续来看看他发现rXSS漏洞的过程。
FB客服
2020/08/07
1.2K0
安全研究 | 从MicroStrategy入手发现Facebook的XSS漏洞
Shiro反序列化漏洞利用汇总
“ Apache Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能。Shiro框架直观、易用,同时也能提供健壮的安全性。”
Bypass
2020/07/07
10.8K0
Shiro反序列化漏洞利用汇总
【漏洞复现】Apache Shiro 反序列化漏洞
shiro漏洞已经曝光很久了,一直没有整理思路与详细步骤,最近在学习java的反序列化,复现该漏洞来方便之后的学习
李鹏华
2024/03/12
1.9K0
【漏洞复现】Apache Shiro 反序列化漏洞
flask session 安全问题 和 python 格式化字符串漏洞
flask 是非常轻量级的 Web框架 其 session 存储在客户端中(可以通过HTTP请求头Cookie字段的session获取)
中龙技术
2022/09/28
1.1K0
Apache Shiro反序列化漏洞-Shiro-550复现总结
最近一直在整理笔记,恰好碰到实习时遇到的Shiro反序列化漏洞,本着温故而知新的思想,就照着前辈们的文章好好研究了下,整理整理笔记并发个文章。新人初次投稿,文章有啥问题的话,还望各位大佬多多包含。
FB客服
2021/10/21
2.5K0
CVE-2023-27524:Apache Superset未授权访问漏洞
Apache Superset是一个开源的数据可视化和数据探测平台,它基于Python构建,使用了一些类似于Django和Flask的Python web框架。提供了一个用户友好的界面,可以轻松地创建和共享仪表板、查询和可视化数据,也可以集成到其他应用程序中。
Timeline Sec
2023/08/22
2K0
CVE-2023-27524:Apache Superset未授权访问漏洞
渗透测试 Java架构执行漏洞检测
近期对平台安全渗透测试中遇到有JAVA+mysql架构的网站,针对此架构我们Sine安全渗透工程师整理了下具体的漏洞检测方法和防护修复方法,很多像执行框架漏洞获取到系统权限,以及跨权限写入木马后门等等操作,希望大家在渗透测试的道路中发现更多的知识和经验。
网站安全专家
2019/10/25
1.4K0
渗透测试 Java架构执行漏洞检测
强网杯 2022 Web writeup
cookie中有序列化的userfile字段来表示用户已经上传的文件,那应该要先想办法通过文件读取的功能读取到源代码,然后再考虑如何结合反序列化实现RCE。
ek1ng
2022/09/23
8380
强网杯 2022 Web writeup
Python 反序列化浅析
文章首发于跳跳糖社区https://tttang.com/archive/1782/
用户9691112
2023/05/18
8000
Django(34)Django操作session(超详细)[通俗易懂]
session: session和cookie的作用有点类似,都是为了存储用户相关的信息。不同的是,cookie是存储在本地浏览器,session是一个思路、一个概念、一个服务器存储授权信息的解决方案,不同的服务器,不同的框架,不同的语言有不同的实现。虽然实现不一样,但是他们的目的都是服务器为了方便存储数据的。session的出现,是为了解决cookie存储数据不安全的问题的。
全栈程序员站长
2022/09/20
6.7K0
Django(34)Django操作session(超详细)[通俗易懂]
Cookie、Session
无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况。
py3study
2020/01/19
1.1K0
Cookie、Session
反序列化漏洞原理剖析:从攻击到防御
在安全测试中,反序列化漏洞(Deserialization Vulnerability)因其高危害性和隐蔽性,成为近年来攻击者利用的最为频繁的漏洞类型之一,log4j2、fastjson等知名应用的漏洞中都不乏它的身影。本文将从原理、危害、利用方式及防御措施等方面,带大家详细了解这一漏洞。
星尘安全
2025/04/09
4720
反序列化漏洞原理剖析:从攻击到防御
看我如何发现价值三千美金的Facebook视频缩略图信息泄露漏洞
本文我要分享的是我的一个$3000美金Facebook漏洞发现过程。在我决定对Facebook网站进行安全测试之后,我熟读了很多相关的漏洞发现writeup,发现Facebook对有效漏洞的赏金程度还算可观,于是乎,我就给自己制订了几个相关的Facebook网站目标,看看能否在其中发现一些有意思的问题,挖掘出实质性的漏洞来。
FB客服
2018/07/30
8590
看我如何发现价值三千美金的Facebook视频缩略图信息泄露漏洞
推荐阅读
相关推荐
Code-Breaking中的两个Python沙箱
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档