算法分析复习重点

目录

复习重点

子集数

01背包

排列树

(可以求出所有的解,但是是残缺的)

n-皇后

n的全排列

回溯法 就是对隐式图的深度优先搜索 算法 

(勤劳或许也是一种诅咒)

八皇后回溯的过程

解空间  

结点的扩展规则 

搜索解空间  (一直往下走) 首先深度优先 ,数据结构好的话可以使用栈

活结点和死结点  

智能计算 优化问题  

(写代码要有自己的风格和模式)

要用自己的脑子来判断 

马的遍历问题 

使用数组的下标,来记录它的增量 

深度优先搜索 往下去走 

八个状态如何来安排 

数据结构设计 dep = n*m 求解到成功  

试探完毕也就出来了

二维数组 

(生命是非常短暂的,我们需要在有限的生命中去尽力探索这个世界,我们不应该被既定的许多东西束缚住,那不是生命本身的意义,我们不应该被生活所欺骗)

(很多东西只有你有足够的认知和知识储备,你才能够理解许多大师的话语和深意)

回溯的题目 

二十层的嵌套循环

题目类型 

选择,填空,分析(辨析),代码补全,算法设计

排列及排列树的回溯搜索 

如何使用回溯法写出n的全排列

在这个例子中,permute 函数接受一个整数n,生成从1到n的全排列。backtrack 函数是回溯的核心,它通过递归的方式尝试每个可能的数字排列,直到找到一个完整的排列。

注意事项:

  • backtrack 函数中的 path 参数表示当前的路径,result 参数用于存储所有找到的全排列。
  • 如果当前路径的长度等于数组的长度,就表示找到了一个全排列,将其加入到结果中。
  • 在循环中,检查数字是否已经在路径中,如果没有,则选择该数字,递归到下一个位置,然后回溯,撤销选择,继续尝试下一个数字。

这是一个基本的回溯法例子,可以根据具体问题的要求进行适当的调整。

对角线不准相同,不能是一个定值

是所有排列数的一个骨髓 

画出了全排列的那个树  

有没有被使用过,互不重复  

什么叫做全排列吗?

交换其中任意两个 ,别重复也别漏 

写成活的  不缺数字  不考虑这个事情  

如果不是个写代码的老手,会看不懂 

运行速度会慢一些 ,由用户输入 ,写成具体有几个数的全排列

回溯法 全排列

try(int t)
{ int j;
if (t>n)
{output();}
else
for(j=t;j<=n;j++)
{swap(t,j);
try(t+1):
swap(t,j);/回溯时,恢复原来的排列/

}}

try(int t)
{
    int j;

    // 如果当前处理的位置 t 超过了总数 n,说明已经生成了一种排列,输出结果
    if (t > n)
    {
        output();
    }
    else
    {
        // 遍历当前位置 t 到 n 的所有可能的值
        for (j = t; j <= n; j++)
        {
            // 将当前位置 t 的元素与位置 j 的元素交换
            swap(t, j);

            // 递归调用 try 函数,处理下一个位置 t+1
            try(t + 1);

            // 回溯时,恢复原来的排列,将之前交换的元素还原
            swap(t, j);
        }
    }
}

try(1):
  for j = 1 to 3:
    swap(1, 1)  # 选择了数字1放在第一个位置
    try(2):
      for j = 2 to 3:
        swap(2, 2)  # 选择了数字2放在第二个位置
        try(3):
          for j = 3 to 3:
            swap(3, 3)  # 选择了数字3放在第三个位置
            try(4):
              t > n,输出排列 [1, 2, 3]
            回溯,执行 swap(3, 3) 恢复原来的排列 [1, 2, 3]
        回溯,执行 swap(2, 2) 恢复原来的排列 [1, 2, 3]
      for j = 3 to 3:
        swap(2, 3)  # 选择了数字3放在第二个位置
        try(3):
          ...
        回溯,执行 swap(2, 3) 恢复原来的排列 [1, 2, 3]
    回溯,执行 swap(1, 1) 恢复原来的排列 [1, 2, 3]
  for j = 2 to 3:
    swap(1, 2)  # 选择了数字2放在第一个位置
    try(2):
      ...
    回溯,执行 swap(1, 2) 恢复原来的排列 [1, 2, 3]
  for j = 3 to 3:
    swap(1, 3)  # 选择了数字3放在第一个位置
    try(2):
      ...
    回溯,执行 swap(1, 3) 恢复原来的排列 [1, 2, 3]

t=1n=3 时,整个过程如下:

  1. try(1):

    • 第一次循环,j 的初始值是1。
      • 执行 swap(1, 1),选择了数字1放在第一个位置。
      • 递归调用 try(2)
  2. try(2):

    • 第一次循环,j 的初始值是2。
      • 执行 swap(2, 2),选择了数字2放在第二个位置。
      • 递归调用 try(3)
  3. try(3):

    • 第一次循环,j 的初始值是3。
      • 执行 swap(3, 3),选择了数字3放在第三个位置。
      • 递归调用 try(4)
  4. try(4):

    • 在这里,t > n,输出当前排列 [1, 2, 3]。
    • 回溯,执行 swap(3, 3) 恢复原来的排列 [1, 2, 3]。
  5. 回到 try(3):

    • 第二次循环,j 的初始值是3。
      • 执行 swap(3, 3),选择了数字3放在第三个位置。
      • 递归调用 try(4)
  6. try(4) (第二次调用):

    • 在这里,t > n,输出当前排列 [1, 2, 3]。
    • 回溯,执行 swap(3, 3) 恢复原来的排列 [1, 2, 3]。
  7. 回到 try(2):

    • 第二次循环,j 的初始值是2。
      • 执行 swap(2, 2),选择了数字2放在第二个位置。
      • 递归调用 try(3)
  8. try(3) (第二次调用):

    • 第一次循环,j 的初始值是3。
      • 执行 swap(3, 3),选择了数字3放在第三个位置。
      • 递归调用 try(4)
  9. try(4) (第三次调用):

    • 在这里,t > n,输出当前排列 [1, 3, 2]。
    • 回溯,执行 swap(3, 3) 恢复原来的排列 [1, 2, 3]。
  10. 回到 try(3) (第二次调用):

    • 第二次循环,j 的初始值是3。
      • 执行 swap(3, 3),选择了数字3放在第三个位置。
      • 递归调用 try(4)
  11. try(4) (第四次调用):

    • 在这里,t > n,输出当前排列 [1, 3, 2]。
    • 回溯,执行 swap(3, 3) 恢复原来的排列 [1, 2, 3]。
  12. 回到 try(2):

    • 第三次循环,j 的初始值是3。
      • 执行 swap(2, 3),选择了数字3放在第二个位置。
      • 递归调用 try(3)
  13. try(3) (第三次调用):

    • 第一次循环,j 的初始值是3。
      • 执行 swap(3, 3),选择了数字3放在第三个位置。
      • 递归调用 try(4)
  14. try(4) (第五次调用):

    • 在这里,t > n,输出当前排列 [2, 1, 3]。
    • 回溯,执行 swap(3, 3) 恢复原来的排列 [1, 2, 3]。
  15. 回到 try(3) (第三次调用):

    • 第二次循环,j 的初始值是3。
      • 执行 swap(3, 3),选择了数字3放在第三个位置。
      • 递归调用 try(4)
  16. try(4) (第六次调用):

    • 在这里,t > n,输出当前排列 [2, 1, 3]。
    • 回溯,执行 swap(3, 3) 恢复原来的排列 [1, 2, 3]。
  17. 回到 try(2):

    • 第四次循环,j 的初始值是3。
      • 执行 swap(2, 3),选择了数字3放在第二个位置。
      • 递归调用 try(3)
  18. try(3) (第四次调用):

    • 第一次循环,j 的初始值是3。
      • 执行 swap(3, 3),选择了数字3放在第三个位置。
      • 递归调用 try(4)
  19. try(4) (第七次调用):

    • 在这里,t > n,输出当前排列 [2, 3, 1]。
    • 回溯,执行 swap(3, 3) 恢复原来的排列 [1, 2, 3]。
  20. 回到 try(3) (第四次调用):

    • 第二次循环,j 的初始值是3。
      • 执行 swap(3, 3),选择了数字3放在第三个位置

留学咨询

1.2024年国内考研报名已经截至,据统计今年报考人数已经突破500W人!

从往年的数据可以看出,国内考研人数逐年增加,考生竞争压力也变得越来越大,学历的价值也越来越重要。相比国内,国外的研究生学制整体来说较短一些,且入学申请政策相较于国内考研来说也更加灵活,比如国内一年-考、一考定胜负,在国外会更加丰富一些,不会一局定“输赢”。不仅如此,国外还可以同时申请多所学校和多个专业,甚至还可以选择多国联申,只要选校、选专业的策略正确,一般都可以申请到比较满意的院校和专业。考研总是存在各种变数,大家只有做好“两手准备,才能拥有双重保障”。

2.Niche发布2024年全美最难进入的大学排名!

从榜单中可以看出,上榜的美国大学,无论是综合大学还是文理学院,录取率普遍低于10%,真是当之无愧的“高冷校”,申请难度可想而知。加州理工学院、斯坦福大学、麻省理工学院一直是“精英和学霸的聚集地”,无论是科研实力、师资力量,还是国际影响力,都享有极高赞誉。正因如此,大学招生官在考察申请者时,往往更青睐优秀且富有创造力和独特性的学生。
波莫纳学院仍是全美最难录取的文理学院,斯沃斯莫尔学院、鲍登学院、科尔比学院等,录取难度丝毫不逊于顶尖综合性大学。

完整排名链接:https://www.niche.com/colleges/search/hardest-to-get-in/?type=private&type=public

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/217659.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

大模型技术的发展与实践

一、大模型的概念 大型语言模型&#xff0c;也称大语言模型、大模型&#xff08;Large Language Model&#xff0c;LLM&#xff1b;Large Language Models&#xff0c;LLMs) 。 大语言模型是一种深度学习模型&#xff0c;特别是属于自然语言处理&#xff08;NLP&#xff09;的…

【皇帝的新装】像管理产品一样,来管理自己

在前进的路上需要不时的回头看&#xff0c;看自己来时的脚步&#xff0c;是杂乱无章&#xff0c;还是方向一致。善于从经验中总结可以让我们少走许多弯路&#xff0c;降低我们的消耗。 偶然间&#xff0c;回头看看&#xff0c;入行产品经理已经三年有余。沉迷在各种具体事务中&…

类与对象的概念:创建及调用方法

掌握类和创建对象的关系 定义类 定义对象 定义和调用方法 编程思想&#xff1a;面向过程编程&#xff0c;面向对象编程 系统提供数据类型【String&#xff0c;char&#xff0c;double】&#xff0c;我们也可以自己定义类型&#xff1a;根据自定义类型所衍生出来的变量就是…

【Cadence Allegro17.4】

Cadence Allegro17.4 1. Cadence Allegro17.42. pcb工程文件的介绍3.4.5.6. 1. Cadence Allegro17.4 常用的工具 2. pcb工程文件的介绍 新建工程 &#xff1a; 飞行器 要创建的文件夹 GERBER光会文件&#xff0c;发出去制版。 DXF结构文件&#xff0c; pcb文件 lib 封装库 sc…

2023博思高科技智慧车行、人行专项研讨会成功召开

来源&#xff1a;智安物联网 11月30日&#xff0c;深圳市博思高科技有限公司&#xff08;以下简称“博思高科技”&#xff09;在其总部成功举办了智慧车行、人行专项研讨会议。本次会议邀请了来自国家发改委综合运输研究所的程世东主任&#xff0c;中国安全防范产品行业协会原…

BFS求树的宽度——结合数组建树思想算距离

二叉树最大宽度 https://leetcode.cn/problems/maximum-width-of-binary-tree/description/ 1、考虑树的宽度一定是在一层上的所以进行BFS&#xff0c;树的BFS不建议直接使用队列&#xff0c;每次add/offer然后poll/remove&#xff0c;这样子层级关系不好显示。我们可以定义…

基于现代学徒制的大数据技术与应用人才培养模式探讨

学生学徒制的实施旨在解决当前新技术企业招聘技能人才难和青年就业难的结构性矛盾&#xff0c;通过生态链链主企业携手院校共同解决毕业年度学生就业问题&#xff0c;按照学生个人意愿&#xff0c;建立以就业导向的学生学徒制关系&#xff0c;签订学徒培养协议确定学生就业岗位…

SAP系统邮件功能配置 SCOT <转载>

原文链接&#xff1a;https://zhuanlan.zhihu.com/p/71594578 相信SAP顾问或多或少都会接到用户要求SAP系统能够定时发送邮件的功能&#xff0c;定时将用户需要的信息已邮件的方式发送给固定的人员。 下面就来讲一下SAP发送邮件应该如何配置&#xff1a; 1、RZ10做配置&#…

【蓝桥杯】 蓝桥杯Python必备基础知识

输入输出 #读取int类型数据 x int(input()) #读取float类型数据 x float(input()) #读取string类型数据 x input() #读取多个数据 x, y map(int, input().split()) #其他基本类型同理 #读取一行的数据存放到数组种 int_list [int(i) for i in input().split()] #其他基…

基于SSM框架的网上书店系统

基于SSM框架的网上书店系统 文章目录 基于SSM框架的网上书店系统 一.引言二.系统设计三.技术架构四.功能实现五.界面展示六.源码获取 一.引言 随着互联网的普及和电子商务的快速发展&#xff0c;网上书店系统成为了现代人购买图书的主要方式之一。网上书店系统不仅提供了便捷的…

【性能测试】混合业务场景按比例设计

已知从生产环境中统计出的接口比例如下所示&#xff1a; 接口接口比例接口140%接口220%接口330%接口410% 场景一&#xff1a;以上接口无上下依赖关系&#xff0c;设计出容量场景 接口1比例如下&#xff1a; 接口2比例如下&#xff1a; 接口3比例如下&#xff1a; 接口4比例…

跨浏览器测试:如何确保你的应用在各种浏览器上都能正常运行

在当今的互联网时代&#xff0c;浏览器已成为我们获取信息、与他人交流、工作和娱乐的主要工具。然而&#xff0c;不同的浏览器、不同的版本和不同的操作系统可能会对你的应用造成不同的影响&#xff0c;可能使其表现出各种不同的行为和问题。为了确保你的应用能在各种浏览器环…

每日3道PWN(第一天)

环境准备 我现在用的是kali 现阶段工具&#xff1a;checkesc、IDA、比较完善的python环境 下载工具的话&#xff0c;我这里不提供了 buuctf——test_your_nc1 参考wp&#xff1a; BUUCTF PWN-----第1题:test_your_nc_buuctf test_your_nc-CSDN博客 查看的资料&#xff1a;…

C++作业1

提示并输入一个字符串&#xff0c;统计该字符中大写、小写字母个数、数字个数、空格个数以及其他字符个数 要求使用C风格字符串完成 代码&#xff1a; #include <iostream>using namespace std;int main() {string str;cout << "请输入一个字符串:" &…

sagment-anything官方代码使用详解

文章目录 一. sagment-anything官方例程说明1. 结果显示函数说明2. SamAutomaticMaskGenerator对象(1) SamAutomaticMaskGenerator初始化参数 3. SamPredictor对象(1) 初始化参数(2) set_image()(3) predict() 二. SamPredictor流程说明1. 导入所需要的库2. 读取图像3. 加载模型…

IntelliJ IDEA的下载安装配置步骤详解

引言 IntelliJ IDEA 是一款功能强大的集成开发环境&#xff0c;它具有许多优势&#xff0c;适用于各种开发过程。本文将介绍 IDEA 的主要优势&#xff0c;并提供详细的安装配置步骤。 介绍 IntelliJ IDEA&#xff08;以下简称 IDEA&#xff09;之所以被广泛使用&#xff0c;…

Kubernetes存储搭建NFS挂载失败处理

搞NFS存储时候发现如下问题&#xff1a; Events:Type Reason Age From Message---- ------ ---- ---- -------Normal Scheduled 5m1s default-scheduler Successful…

【web安全】RCE漏洞原理

前言 菜某的笔记总结&#xff0c;如有错误请指正。 RCE漏洞介绍 简而言之&#xff0c;就是代码中使用了可以把字符串当做代码执行的函数&#xff0c;但是又没有对用户的输入内容做到充分的过滤&#xff0c;导致可以被远程执行一些命令。 RCE漏洞的分类 RCE漏洞分为代码执行…

如何基于Akamai IoT边缘平台打造一个无服务器的位置分享应用

与地理位置有关的应用相信大家都很熟悉了&#xff0c;无论是IM软件里的位置共享或是电商、外卖应用中的配送地址匹配&#xff0c;我们几乎每天都在使用类似的功能与服务。不过你有没有想过&#xff0c;如何在自己开发的应用中嵌入类似的功能&#xff1f; 本文Akamai将为大家提…

C语言中如何取一串比特中的特定位的比特

#include <iostream> #include <bitset> using namespace std; /* 向右的移位操作相当于丢掉最后的几位&#xff0c;然后剩下的位数进行“与”运算即可。 */ int main() {int a 0x2FB7; //0x2FB70010 1111 1011 0111char end3 (a >> 4) & 0x07; //取a…