自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

二哈

理性与逻辑构筑更好的自己

  • 博客(40)
  • 资源 (2)
  • 收藏
  • 关注

原创 深度优先之铺瓷砖

1. 问题描述:时间限制:5000ms单点时限:1000ms内存限制:256MB描述有一长度为N(1<=N<=1000)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板铺满,一共有多少种不同的铺法?为了防止溢出,请将结果Mod 1000000007输入一个整数N。(1 <= N <= 1000)...

2018-10-31 21:08:14 584

原创 深度优先搜索之困难的串

1. 问题描述:如果一个字符串包含两个相邻的重复子串,则称它为容易的串,其他串称为困难的串如:BB,ABCDACABCAB,ABCDABCD都是容易的,A, AB, ABA, D, DC, ABDAB, CBABCBA都是困难的。输入正整数n, L 输出由前L个字符(大写英文字母)组成的,字典序第n小的困难的串。例如,当L=3时,前7个困难的串分别为:A, AB, ABA, ABAC,...

2018-10-30 20:44:08 453

原创 深度优先搜索之全排列(逐步拼接)

1. 输入一个字符串,输出该字符串的全部排列的集合2.我们这里使用dfs深度优先搜索算法来解决,每一次都判断当前的索引对应的字符是否在原来使用过,若使用过则不进入循环中的dfs,继续扫描下一个,若之前还没有使用这个字符,那么把这个字符加进来,这里需要注意的是,在把字符加进来之前需要把原来的字符串临时保存一下,因为当这一层的递归调用结束之后原来的字符串已经增加内容改变了,所以需要在退回到这一...

2018-10-28 11:01:38 991

原创 深度优先搜索之素数环

1. 问题描述:输入正整数n,对1-n进行排列,使得相邻两个数之和均为素数,输出时从整数1开始,逆时针排列。同一个环应恰好输出一次。n<=16如输入:6输出:1 4 3 2 5 61 6 5 2 3 42. 我们这里使用dfs来进行解决,尝试走每一条线路,发现这条路径不适合的话退回到上一层,继续搜索它的兄弟,这样便会搜索出每一条可能的路径,在调用df...

2018-10-27 18:03:36 403

原创 按照单词翻转字符串

1. 问题描述:例如:从控制台输入here are you,输出you are here思路是使用Java提供翻转字符串的方法,先翻转整个字符串,然后使用正则表达式对翻转后的字符串进行分割,这里使用空格分割,然后把分割后的结果存储到一个String数组中,之后再for循环中遍历然后再把每个单词翻转回来,具体的代码如下:import java.util.Scanner;public ...

2018-10-27 11:28:33 893

原创 深度优先搜索涉及到的概念

1. 回溯递归调用代表开启一个分支,如果希望这个分支返回后某些数据恢复到分支开启前的状态以便重新开始,就要使用到回溯技巧全排列的交换法,数独,部分和,用到了回溯下一个状态在开始之前需要利用到之前的状态,此时需要进行回溯,因为之前的状态对现在的状态存在着影响2.剪枝深度优先搜索的时候如果已经明确从当前状态无论如何转移都不会存在(更优)解,就应该终止往下的继续搜索,这种方法叫做剪...

2018-10-27 10:07:51 534

原创 深度优先搜索之n皇后的问题

1. 问题描述:请设计一种算法,解决著名的n皇后问题,这里的n皇后问题指在一个n * n的棋盘上放置n个棋子,使得每行每列和每条对角线上都只有一个棋子,求其摆放的方法数。给定一个int n,请返回方法数,保证n小于等于152. 经典的n皇后,我们最常用的是使用深度优先搜索算法dfs来解决,因为在棋盘上的位置上放置一个棋子就是一种试探,并且假如这个棋盘放置好棋子但是之后的棋子无论如何...

2018-10-27 09:41:53 1254 1

原创 深度优先搜索之部分和(平行状态下的求解)

1. 问题描述:给定整数序列a1,a2,...,an,判断是否可以从中选出若干数,使它们的和恰好为k.1≤n≤20-10^8≤ai≤10^8-10^8≤k≤10^8样例:输入:n=4a={1,2,4,7}k=13输出:Yes (13 = 2 + 4 + 7)2. 我们这里使用dfs来解决,可以这样想,我们对于当前的元素可以选择要,也可以选择不要,那么就形成了...

2018-10-26 18:24:41 201

原创 深度优先搜索之水洼的数量

1. 问题描述:水洼数目有一个大小为N * M的院子,雨后积起了水,八连通的积水被认为是连在一起的,请求出园子里面总共有多少水洼(八连通指的是下图中相对w大的*部分)****w****限制条件N, M <=100样例:输入N = 10, M = 12园子如下图('W'表示积水,'.'表示没有积水)输出32. 问题是要我们求解出连着的一片的水洼的数量...

2018-10-26 17:33:14 1512

原创 Java中next与nextLine方法的区别

1. Java中的Scanner类中的方法next()与nextLine()都是吸取输入控制台输入的字符①next()方法不会吸取字符前和后的空格/Tab,只吸取字符,开始吸取字符(字符前后不算)直到遇到空格/Tab/回车截取吸取②nextLine()吸取字符前后的空格/Tab键,也会吸收回车符2. 下面对next与nextLine()方法进行测试①从控制台输入:abcd abcd...

2018-10-26 13:41:42 3933 2

原创 JSP页面出现这样的错误:Multiple annotations found at this line: The superclass "javax.servlet.http.HttpServlet

1. 出现上面错误的原因是由于在新建动态的Web工程的时候没有新建Tomcat服务器,所以此时我们需要新建一个server然后把Tomcat服务器文件的解压路径加入进来: 2.右键新建的Dynamic项目,然后Configure Build Path->Add Library->Server Runtime->Apache Tomcat 7.0 然...

2018-10-25 17:50:26 2030 1

原创 U盘插入之后有声音但是无法显示打开U盘

1.首先我们需要右击该图标,会出现如图所示的右键菜单,单击“打开设备和打印机2.进入设备和打印机窗口后,右键如图箭头所指的“USB FLASH DRIVE”,单击删除设备4.重新插入U盘看一下是否可以...

2018-10-24 16:10:29 18096 7

原创 深度优先搜索之部分和(平行状态下的求解)

1. 问题描述:给定整数序列a1,a2,...,an,判断是否可以从中选出若干数,使它们的和恰好为k.1≤n≤20-10^8≤ai≤10^8-10^8≤k≤10^8样例:输入:n=4a={1,2,4,7}k=13输出:Yes (13 = 2 + 4 + 7)2. 一看到题目我们直觉的思维是使用暴力破解来进行求解,虽然可以求解出来,但是涉及到未知的多个数...

2018-10-23 22:35:56 340

原创 深度优先搜索中的回溯

深度优先搜索中是否需要回溯需要看下一层的结果返回是否会对上一层的结果有影响,假如有影响那么需要进行回溯大部分是对于数组有操作的情况下改变数组的内容可能在返回上一层的时候影响(数组是共享的数据空间),那么就需要进行回溯,像使用交换法来求解全排列的情况就需要回溯,因为下一次交换的结果返回到上一层的时候有影响所以需要把数组恢复到交换前的状态才可以进行下一次的操作...

2018-10-21 21:34:18 468

原创 深度优先搜索之数独游戏

1. 问题描述:你一定听说过“数独”游戏。如下图所示,玩家需要根据9×9盘面上的已知数字,推理出所有剩余空格的数字,并满足每一行、每一列、每一个同色九宫内的数字均含1-9,不重复。数独的答案都是唯一的,所以,多个解也称为无解。本图的数字据说是芬兰数学家花了3个月的时间设计出来的较难的题目。但对会使用计算机编程的你来说,恐怕易如反掌了。本题的要求就是输入数独题目,程序输出数独的唯一解。我...

2018-10-21 21:26:48 2597

原创 第k个全排列(前缀法)

1.在控制台输入一个字符串,字符串长度小于等于12,并且输入一个数字n,求出字典序的第n个全排列2.我们可以求出全部的全排列之后排序后输出第k个全排列,但是这样会非常浪费时间和空间,这里使用另外的一种方法,那就是前缀法求解第k个全排列从头开始扫描字符串,假如当前字符没有出现,那么把这个字符加入到字符串中,假如以ABC为例,那么具体的前缀的形成过程如下:从ABC调用完返回到上一层AB...

2018-10-20 20:38:58 1617

原创 全排列(逐步生成结果之回溯加递归)

1.问题描述:输入一个字符串,输出该字符串的全部全排列集合2. 我们除了使用递归和递推在原来的字符串的基础上添加新的字符之外,还可以使用递归加上回溯的方法来交换字符串中字符的位置从而达到排列字符串的目的,因为数组是公共的数据空间,那么在交换字符串的位置之后那么需要把数组恢复到交换前的位置,那么这就是回溯,假如不进行回溯的话那么经过交换之后的数组将会是乱套的在循环中递归对比普通的单分支和双...

2018-10-20 17:51:11 480

原创 全排列(逐步生成结果之递归空位上添加字符)

1. 问题描述:输入一个字符串,输出该字符串的全部全排列集合2. 我们除了可以使用递推的方法也可以使用递归的方法来进行处理,先把字符串的第一个字符先排列好,返回的结果为List<String>,然后将上一层排列好的List中的字符串进行遍历往空位上插入当前字符,然后把新的List<String>返回,调用每一层都会返回一个最新的list,最终层层更新到最终调用的函数...

2018-10-18 20:19:04 134

原创 普通的进制的转换

1. 问题描述:从控制台输入一个十进制int型整数,从控制台输出八进制,十进制,十六进制表示(隔行输出)十六进制输出的假如有字母表示的话输出大写字母传统的方法:把一个数除以要转换的进制,一直除下去直到被除数为零,此时需要把余数按照逆序连接排列起来最后形成最终的结果其中将余数的连接起来使用到了StringBuilder的append()方法,这个方法可以动态地增加字符串,在连接起来需...

2018-10-18 19:26:24 177

原创 全排列(逐步生成结果之迭代空位上添加字符)

1. 问题描述:输入一个字符串,输出该字符串的全部全排列集合2. 思路描述:我们先从简单的例子开始考虑:假如输入的字符串为 ABC我们先考虑A,可以在A的所有空位上添加上当前元素B,可以得到 {BA,AB},对得到的字符串集合再进行添加当前元素那么可以在BA的所有空位上添加元素,得到的集合为{ CBA,BCA,BAC} 在AB的所有空位上添加元素得到的集合为{ CAB,ACB,...

2018-10-18 14:29:27 211

原创 生成非空集合(逐步生成结果-二进制解法)

1. 问题描述:请编写一个方法,返回某集合的所有非空子集。给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于20,且元素互异2. 我们除了可以使用递归和递推的方法,此外我们还有一种更有技巧性的方法,那就是二进制的解法假如数组的长度为3,那么它的非空集合的个数就为0 ~ 2 ^ n - 1, 而在这个区间的这些数字的二进制位上的数字我...

2018-10-18 13:56:15 284

原创 Set集合

Set集合存储的元素是无序的但是是唯一的,即不允许集合中重复元素的出现import java.util.HashSet;import java.util.Set;public class Main{ public static void main(String[] args) { Set<Integer> set = new HashSet<In...

2018-10-17 20:51:10 248

原创 生成非空集合(逐步生成结果迭代)

1. 问题描述:请编写一个方法,返回某集合的所有非空子集。给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于20,且元素互异2. 除了使用递归的方法还可以使用迭代的方法来解决,先创建存储集合的数据结构Set<Set<Integer>set并且进行初始化把第一个元素初始化为空集,然后通过for循环遍历这个集合,然后在for...

2018-10-17 20:34:35 442

原创 函数的极值与最大值最小值

1.在这一章节里面需要掌握的有三个定理:求解极值的步骤: 2.求解最大值和最小值问题有以下步骤: 3.习题:1.求下列函数的极值(先要求解出定义域)上面是使用了定理3进行判定的应用题目考察的主要是对函数的求导能力与运算能力特别要注意第13道题目的求导当一个变量乘以含有该根号的...

2018-10-17 17:49:08 8649

原创 生成非空集合(逐步生成结果递归)

1. 问题描述:请编写一个方法,返回某集合的所有非空子集。给定一个int数组A和数组的大小int n,请返回A的所有非空子集。保证A的元素个数小于等于20,且元素互异2. 在纸上进行简单分解问题之后我们发现有一种技巧。(从数组中的第一个元素和空集开始考虑,而且每次可以保持这个集合也可以向集合中添加当前元素)先从简单一点的例子来着手进分析,数组A中的元素分别是1,2,3假如...

2018-10-16 22:00:45 477

原创 对于递归的理解

有很多时候我们可能会遇到使用递归的问题来解决问题,其中我感觉递归最重要的是把大的问题一步步地进行分解成小的问题所以首先要对问题进行分割,其中可能涉及到了一些分割问题的技巧其次,分割成小问题之后我们要确定递归的方法中的参数,有多少个变量在变化,需要传进方法中参数有多少,递归调用的时候参数该如何变化这些都是需要进行详细分析之后需要确定的(每个小问题处理的方法是一样的)第三个是递归是自己调用...

2018-10-15 20:04:56 224

原创 逐步生成结果之非数值型

1. 问题描述:输出合法的括号组合输入括号对数输出所有合法组合输入:3输出: ( ) ( ) ( ) ,( ( ( ) ) ) , ( ( ) ( ) ), ( ) ( ( ) ), ( ( ) ) ( )2. 首先要理解题目表达的意思,理解清楚之后可能一开始没有什么思路,但是我们要养成一种解题的习惯,那就是遇到复杂的问题先从简单的问题入手,从一开始写出几个简单的例子帮助我们...

2018-10-15 19:52:10 117

原创 词根词缀法记忆单词

1.常见的单词的词根有:前缀通常表示的是方向 数量 属性后缀通常表示的是一个单词的词性词根通常表示的是一个单词的意思有时候前缀与后缀之间夹杂着元音字母是为了组成的单词更好发音①表示人的后缀:---ant   ---ent  ---an ---ionaccountant:会计员recipient:接受者②表示动词的后缀:---ate  ---ite  ---ize -...

2018-10-13 19:51:58 8329

原创 函数的单调性与曲线的凹凸性

1.函数的单调性:2.函数的凹凸性判定:习题3-4:   特别要注意求解该函数的一阶导数     3.可以利用函数的单调性来证明不等式      第6题可以求解函数的导数来分解单调性进行分析函数的实根求解函数的拐点以及凹或凸区间:11题考察的是一元三次方程根的...

2018-10-12 21:28:27 4843

原创 硬币的表示

1. 问题描述:假设我们有8种不同面值的硬币{1, 2, 5, 10, 20, 50, 100, 200}, 用这些硬币组合构成一个给定的数值n。例如n=200,那么一种可能的组合方式为 200 = 3 * 1 + 1 * 2 + 1 * 5 + 2 * 20 + 1 * 50 + 1 * 100.问总共有多少种可能的组合方式?(这道题目来自著名编程网站ProjectEuler)2. ...

2018-10-12 13:55:50 319

原创 机器人走方格(递归)

1. 问题描述:有一个X*Y的网格,一个机器人只能走格点且只能向右或向下走,要从左上角走到右下角。请设计一个算法,计算机器人有多少种走法给定两个正整数int x,int y,请返回机器人的走法数目,保证x+y小于等于122. 一开始的时候很正常都是没有思路的,所以把问题想得很复杂那么但是越复杂的时候我们越需要冷静,这个时候我们就需要使用一些简单的例子帮助我们来分析问题,因为这些简...

2018-10-12 11:13:14 3703 2

原创 Eular质数筛选方法

1. 有时候我们给出长度为N的区间需要求解出这个区间中质数的个数,假如使用素数定理来求解出的话时间复杂度可能有点高,因为使用素数定理的时候核心代码如下:for(int i = 2;i < x; i++){ if(arr[i]!=0){ continue; } int k = 2; while(i * k < x){ arr[i * k] = -1; k++;...

2018-10-11 19:18:06 188

原创 阶梯博弈-poj1704

1. 问题描述:(网址:http://poj.org/problem?id=1704) Description Georgia and Bob decide to play a self-invented game. They draw a row of grids on paper, number the grids from left to right by 1, 2, 3, ...

2018-10-09 22:39:10 228

原创 阶梯博弈

1. 典型的Nim博弈问题通常的Nim游戏的定义是这样的:有若干堆石子,每堆石子的数量都是有限的,合法的移动是"选择一堆石子并拿走若干颗(不能不拿)",如果轮到某个人时所有的石子堆都已经被拿空了,则判负(因为他此刻没有任何合法的移动)。这游戏看上去有点复杂,先从简单情况开始研究吧。如果轮到你的时候,只剩下一堆石子,那么此时的必胜策略肯定是把这堆石子全部拿完一颗也不给对手剩,然后对手就输了。...

2018-10-09 20:52:18 182

原创 使用裴蜀公式求解线性方程组的第一个大于零的解

1. 假设方程组为ax + by = m​在数论中,裴蜀定理是一个关于最大公约数(或最大公约式)的定理。裴蜀定理得名于法国数学家艾蒂安·裴蜀,说明了对任何整数a、b和它们的最大公约数d,关于未知数x和y的线性丢番图方程(称为裴蜀等式):ax + by = m有解当且仅当m是d的倍数。裴蜀等式有解时必然有无穷多个整数解,每组解x、y都称为裴蜀数,可用辗转相除法求得。例如,12和42的...

2018-10-09 20:21:12 1181

原创 导数

1.f(x)在x0处可导的充分必要条件是:在x0处的左右导数要相等2. 函数可导性与连续性的关系:可导一定连续,但是连续不一定可导       3.反函数的求导     4.高阶导数    例子:5.隐函数与参数方程确定函数的导数对方程两边进行进行求导提取出f'(x)例子:对于一些比较复杂难求解的导数可...

2018-10-08 22:04:53 1208

原创 微分中值定理与导数的应用

1.常用的三个定理分别是罗尔定理、拉格朗日中值定理、柯西中值定理他们这三个定理是经常用来证明不等式的式子成立①罗尔定理:②拉格朗日中值定理:③柯西中值定理: 2.证明不等式例子  ...

2018-10-08 21:24:07 1851

原创 洛必达法则-求导的方法求解出极限

1.对于0 * ∞ 、∞ - ∞ 、0 ^ 0 、1 ^ ∞ 、0 / 0的情况都可以使用洛必达法则进行求解2.例子如下:                        

2018-10-08 20:36:28 11939

原创 泰勒公式的运用-求解极限

1.我们有时候可能遇到求解一个三角函数与幂函数相加减复合之后的例子的极限,这个时候如果使用洛必达法则或者使用等价无穷小来进行替换求解可能是非常困难的,所以这个时候可以使用泰勒公式来进行化简求解,将相加减之后的函数转化成x^n来进行求解所以使用泰勒公式来进行三角函数与幂函数等比较难求解的函数是比较容易和方便的2.下面是泰勒公式的具体公式3.下面是具体的例子的应用(同济高等数...

2018-10-08 20:21:01 25449

原创 此操作系统不支持.netframework4.7.1

在使用.netframework4.7.1安装程序安装的时候出现了错误:此操作系统不支持.netframework,但是其实不是不支持,需要把Windows更新到最新的系统之后那么就可以成功安装了,此时需要使用到一个安装程序,那就是Windows10易升,下载后更新Windows10位最新的系统之后就可以了...

2018-10-02 17:52:16 61297

hprof-conv.exe

当你出现android------DDMS files not found: tools\hprof-conv.exe错误的时候可以下载这个工具来解决这个问题

2019-03-03

使用json依赖大的jar包

这个json数据包可以用来支持json字符串与对象之间的转换

2019-01-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除