backtrack

leetcode 46 全排列 (python)

别等时光非礼了梦想. 提交于 2020-04-28 06:56:06
给定一个没有重复数字的序列,返回其所有可能的全排列。 示例: 输入: [1,2,3] 输出: [ [1,2,3], [1,3,2], [2,1,3], [2,3,1], [3,1,2], [3,2,1] ] class Solution: def permute(self, nums: List[ int ]) -> List[List[ int ]]: results = [] len_n = len(nums) def backtrack(my_nums, use_nums): if len(my_nums) == len_n: results.append(my_nums) return for i in range(len(use_nums)): x = my_nums.copy() x.append(use_nums[i]) backtrack(x, use_nums[:i] +use_nums[i+ 1 :]) # 不包含i元素 backtrack([], nums) return results 参考:https://www.cnblogs.com/watch-fly/p/leetcode_46_watchfly.html 来源: oschina 链接: https://my.oschina.net/u/4399215/blog/3435803

2020软件工程作业03

╄→гoц情女王★ 提交于 2020-04-12 15:32:59
软件工程第三次作业 这个作业属于那个课程 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 这个作业的要求 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494 这个作业的目标 完成数独 作业正文 如下 其他参考文献 百度 1.github 项目地址: https://github.com/pck0916/TEXT/blob/master/%E4%BD%9C%E4%B8%9A3.txt 2.PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 10 10 Estimate 估计这个任务需要多少时间 10 10 Development 开发 15 10 Analysis 需求分析 (包括学习新技术) 20 15 Design Spec 生成设计文档 25 20 Design Review 设计复审 25 20 Coding Standard 代码规范 (为目前的开发制定合适的规范) 30 35 Design 具体设计 25 20 Coding 具体编码 30 15 Code Review 代码复审 15

2020软件工程作业03

☆樱花仙子☆ 提交于 2020-04-12 15:31:48
软件工程第三次作业 这个作业属于那个课程 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 这个作业的要求 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494 这个作业的目标 完成数独 作业正文 如下 其他参考文献 百度 1.github 项目地址: https://github.com/pck0916/TEXT/blob/master/%E4%BD%9C%E4%B8%9A3.txt 2.PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 10 10 Estimate 估计这个任务需要多少时间 10 10 Development 开发 15 10 Analysis 需求分析 (包括学习新技术) 20 15 Design Spec 生成设计文档 25 20 Design Review 设计复审 25 20 Coding Standard 代码规范 (为目前的开发制定合适的规范) 30 35 Design 具体设计 25 20 Coding 具体编码 30 15 Code Review 代码复审 15

2020软件工程作业03

断了今生、忘了曾经 提交于 2020-04-12 15:28:55
软件工程第三次作业 这个作业属于那个课程 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 这个作业的要求 https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10494 这个作业的目标 完成数独 作业正文 如下 其他参考文献 百度 1.github 项目地址: https://github.com/pck0916/TEXT/blob/master/%E4%BD%9C%E4%B8%9A3.txt 2.PSP表格 PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟) Planning 计划 10 10 Estimate 估计这个任务需要多少时间 10 10 Development 开发 15 10 Analysis 需求分析 (包括学习新技术) 20 15 Design Spec 生成设计文档 25 20 Design Review 设计复审 25 20 Coding Standard 代码规范 (为目前的开发制定合适的规范) 30 35 Design 具体设计 25 20 Coding 具体编码 30 15 Code Review 代码复审 15

backtrack下whatweb的使用

百般思念 提交于 2020-03-19 17:30:09
whatweb是backtrack下的一款Web识别工具,位于 Applications-->BackTrack-->Information Gathing-->Web Application Analysis-->CMS identification-->whatweb    初次使用,我们需在终端下输入 update-alternatives --config ruby   切换为ruby,再输入编号0 root@bt:/pentest/enumeration/web/whatweb# update-alternatives --config ruby There are 2 choices for the alternative ruby (providing /usr/bin/ruby). Selection Path Priority Status ------------------------------------------------------------ 0 /usr/bin/ruby1.8 500 auto mode 1 /usr/bin/ruby1.8 500 manual mode * 2 /usr/bin/ruby1.9.2 400 manual mode  Press enter to keep the current choice[*], or

深度好文:回溯算法详解

坚强是说给别人听的谎言 提交于 2020-02-17 10:28:53
这篇文章是很久之前的一篇《回溯算法详解》的进阶版,之前那篇不够清楚,就不必看了,看这篇就行。把框架给你讲清楚,你会发现回溯算法问题都是一个套路。 废话不多说,直接上回溯算法框架。 解决一个回溯问题,实际上就是一个决策树的遍历过程 。你只需要思考 3 个问题: 1、路径:也就是已经做出的选择。 2、选择列表:也就是你当前可以做的选择。 3、结束条件:也就是到达决策树底层,无法再做选择的条件。 如果你不理解这三个词语的解释,没关系,我们后面会用「全排列」和「N 皇后问题」这两个经典的回溯算法问题来帮你理解这些词语是什么意思,现在你先留着印象。 代码方面,回溯算法的框架: result = [] def backtrack(路径, 选择列表): if 满足结束条件: result.add(路径) return for 选择 in 选择列表: 做选择 backtrack(路径, 选择列表) 撤销选择 其核心就是 for 循环里面的递归,在递归调用之前「做选择」,在递归调用之后「撤销选择」 ,特别简单。 什么叫做选择和撤销选择呢,这个框架的底层原理是什么呢?下面我们就通过「全排列」这个问题来解开之前的疑惑,详细探究一下其中的奥妙! 一、全排列问题 我们在高中的时候就做过排列组合的数学题,我们也知道 n 个不重复的数,全排列共有 n! 个。 PS: 为了简单清晰起见

Kali Linux发展简史

ぃ、小莉子 提交于 2020-01-26 02:40:52
Kali Linux是一个专门用于渗透测试的独立Linux操作系统,它是由BackTrack发展而来,它整合了IWHAX、WHOPPIX、Auditor这三种渗透测试专用的Live Linux之后,BackTrack正式改名为Kali Linux,2013年3月12日Kali Linux发布了第一个版本。 BackTrack是非常著名的渗透测试的系统,而Kali Linux相当于是它的升级版本。 Kali Linux的主要特点有: 它是基于Debian的Linux发行版 它集成了300多个渗透测试程序 它支持绝大多数的无线网卡 它修改了内核以支持(无线)数据包注入 所有的软件包都有研发团队的PGP签名 用户可以自制满足各自需求的Kali Linux发行版 支持基于ARM的硬件系统 来源: https://www.cnblogs.com/RoseKing/p/7265607.html

从全排列看回溯算法

北慕城南 提交于 2019-12-24 17:01:32
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 从全排列看回溯算法 最近又刷起了算法,仿佛回到了大一时奋战到深夜场景,走上社会之初发现大学里学的都是啥玩意儿,工作中基本遇不到,各种数据结构都被封装的妥妥的根本不需要我们去操心,以至于越来越浮于表面。 现在觉得大学的课程是真功夫,是无数学者总结提炼的精华,是计算机从业人员是基本功,基本功不扎实很快就会遇到瓶颈,对算法与数据结构掌握与理解不透彻很难写出非常优秀的软件,亡羊补牢为时不晚,所以拿起旧书本回炉重造磨练自己基本功。 学习算法不仅会收获很多还会给你带来成就感。 下面用通俗的方式结合例子给大家介绍回溯算法 回溯算法框架 func backtrack(选择列表,路径) { if 结束条件 { 得到一种结果 } for i in 选择列表 { if 减支条件 { continue } 选择列表加入路径 backtrack(选择列表,路径) 撤销选择 } } 这个先看不太懂没关系,读完全文可再返回阅读。 回溯算法本质就是一个多叉树遍历问题 我们以在袋子里抓球为力来解释一下上面几个名词。 假设袋子里三个球,抓一个那么就有三种选择,所以选择列表是:[1,2,3] , 如果你抓到1,那么[1]便是路径,对应的是树的树枝。 结束条件:比如你只抓一次,那么结束条件就是路径长度等于1 减支条件:比如抓完放回球

46、全排列

会有一股神秘感。 提交于 2019-12-18 13:03:33
问题描述 问题分析 分析题目,这是一道经典的回溯法题目: backtrack(res, nums, tmp, visited); res是结果集 nums是候选集 tmp是当前路径 visit是访问控制集 基本算法思路是 backtrack ( res , nums , tmp , visited ) { //回溯结束条件(一般是tmp长度符合条件) if ( 满足条件 ) { res添加路径tmp ; return ; } //遍历候选集,继续递归 for ( 候选集 ) { //做选择(包括路径添加元素,和设置visit等) tmp + 1 ; visit [ i ] = false ; //继续递归(backtrack(res, nums, tmp, visited)) backtrack ( res , nums - 1 , tmp + 1 , visited ) //撤销选择(包括路径删除元素,和取消设置visit等) tmp - 1 ; visit [ i ] = true ; } } 解法:回溯法 时间复杂度:指数或者阶乘。 Java代码 package com . company ; import java . util . ArrayList ; import java . util . List ; public class Main { public

leetcode 22. Generate Parentheses

此生再无相见时 提交于 2019-12-15 01:29:55
生成多重括号,使用回溯法试探所有组合 function generateParenthesis(n) { // Write your code here var res = [], condidate = [] function backtrack(n, left, right) { if (condidate.length == n * 2) { res.push(condidate.join('')); } if (left < n) { //Keep 塞左括号 condidate.push('('); backtrack(n, left + 1, right); condidate.pop(); } if (right < left) { //避免出现右括号多余左括号的情况 condidate.push(')'); backtrack(n, left, right + 1); condidate.pop(); } } backtrack(n, 0, 0); return res; } 来源: https://www.cnblogs.com/rubylouvre/p/12041722.html