博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018/11/11蓝桥杯Java培训
阅读量:6867 次
发布时间:2019-06-26

本文共 972 字,大约阅读时间需要 3 分钟。

双十一节刚过,妈的就开始培训了。

今天晚上全程直播培训过程。

先写一道Java最大公约数的题目热热身。

今晚的主题是递归回溯算法。

 开始讲话了,今天来的人非常的多。

画红线是我上一次参加的成绩。希望这一次能够取得更好的成绩。

能够在省赛拿到一等奖,就比公本的学生强了。

具体的工作:

体力活,4小时写10道题目。

 

学习分为两大阶段: 

1、基础阶段——打字,for循环等简单的基础的方法要做的熟练,基本的问题形成自己的编码的习惯。

2、算法——针对特定的问题,分析出特定的算法。《算法导论》作为最主要的参考书。

 

开始上课了:

回溯法。也是一种穷举法。更加聪明的穷举法, 有一个判断的条件来简化穷举,避免了穷举所有的元素。排除明显不合理的步骤——又称剪枝。

 

例题: 八皇后问题。

 

简化成四皇后问题。

直觉的解法,通过4重for循环。

另一种解决思路。

 在第一行放一个皇后,再在第二行中放一个皇后,看第三行和第四行是否有空间在放皇后,如果没有可能性的时候,就不再放第三行和第四行,改动第二个行的皇后的位置,在看第三行是否有空间放第三个皇后,如果没有,再移动第二行的皇后的位置。。。。。

 

排除明显不合理的步骤

 

回溯法概述

1、状态树——这个状态树不是事先有的,是在解题的过程中逐步生产的。

2、约束函数。不同的问题,产别主要表现在约束函数上

3、节点与解

  (1)完全节点,完全的满足条件的节点。

  (2)部分解,部分的满足条件,不知道其是否完全的满足条件,要深入一层继续判断。

  (3)死节点,不满足条件的节点,没有必要继续。

 

 

 

 

递归问题:

将一个规模是n的问题降低为具体步骤的方法。

以下为四皇后的递归解法

 寻找递归的解决方法的约束函数本身就是一个难题,因此主要使用非递归的方法解决问题。

 外while循环控制规模,内while循环不断尝试处理的元素。check(a, k)是约束函数。

else if(check(a, k ))是部分解(应为没有判断条件n == k).

k++是深入一层。

 

 

回溯法的应用:

 

 

 

 

 

 回溯代码框架

 

t[]数组用来表示下标

 

 

全排列:

 

 

题型:给出一个排序,求出下一个排序(用字典序列来求解)。

 

一副扑克牌随机抽出5张牌

 

 

 

 

 

 

转载于:https://www.cnblogs.com/huangZ-H/p/9942937.html

你可能感兴趣的文章
HTML Meta中添加X-UA-Compatible和IE=Edge,chrome=1有什么作用
查看>>
JavaScript常用函数以及语法
查看>>
Nginx与tomcat组合的简单使用
查看>>
查看电脑核数以及线程数
查看>>
栈和队列
查看>>
va_list、va_start和va_end使用
查看>>
pkill命令详解
查看>>
【原】视图学习
查看>>
The Mega Guide to Free SQL Server Tools
查看>>
C语言的基础输入输出
查看>>
IOS学习笔记
查看>>
流水线参数的计算问题
查看>>
MySQL高级
查看>>
ubuntu14.04上设置默认python命令是执行python3而不是Python2
查看>>
[20180124]奇怪的SQL*Net message from dblink.txt
查看>>
用户自定义类型03 - 零基础入门学习Delphi33
查看>>
win10安装Redis方法以及基本配置
查看>>
集成 报表与打印功能在 Microsoft Visual Studio LightSwitch
查看>>
Android--应用开发2(AndroidManfest.xml)
查看>>
在使用seek()函数时,有时候会报错为 “io.UnsupportedOperation: can't do nonzero cur-relative seeks”,代码如下:...
查看>>