- 博客(21)
- 资源 (5)
- 收藏
- 关注
原创 最长不下降子序列
package cn.edu.hit;import java.util.Scanner;/** * 求最长单调序列 * @author admin * */public class LongestMonotone { public static void main(String[] args) { Scanner in = new Scanner(System.in);
2017-05-28 15:09:39 495
原创 快速幂算法
1.概念 快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。2.算法代码 package cn.edu.hit;import java.util.Scanner;/** * 快速幂算法 * 利用二进制 * @author admin * */public class Exponentiation { pu
2017-05-24 14:45:55 398
原创 深度优先搜索求解迷宫问题
1.问题描述 定义一个二维数组: int maze[5][5] = { 0,1, 0, 0, 0, 0,1, 0, 1, 0, 0,0, 0, 0, 0, 0,1, 1, 1, 0, 0,0, 0, 1, 0,}; 它表示一个迷宫,其中的
2017-05-17 19:42:53 1174
原创 24点游戏
1.问题描述 输入4个整数,运用四则元素,可以加括号,判断其运算结果能不能是24。2.相关定理 s是一个有理数的集合。 函数f(s)定义如下: 如果s中只有一个元素,则f(s)=s; 否则,f(s)=∪f(s-{r1,r2}+{r}),r1,r2是s中的任意两个元素,r的取值为r1和r2进行四则运算的结果。 因此我们从s中任取两个元素,求其四则运算的
2017-05-16 16:55:41 304
原创 回溯法实现求解子集合和问题
1.回溯法简介 回溯法是一种在解空间搜索问题的解的方法。它在问题的解空间树种,按深度优先的策略,从根节点出发搜索解空间树。算法搜索至解空间树的任一节点时,先判断该节点是否包含问题的解。如果不包含,则跳过对以该节点为根的子树的搜索,逐层向其祖先节点回溯,否则进入该子树,继续按深度优先策略搜索。用回溯法求解问题的所有解的时,要回溯到根,且根节点的所有子树都被搜索遍才结束。用回溯法求问题的一个解时
2017-05-15 15:34:42 4657
原创 Java中的值传递和“引用传递”
1.Java中只有值传递 java中是没有指针的,java中只存在值传递, 然而我们经常看到对于对象(数组,类,接口)的传递似乎是引用传递,可以改变对象中某个属性的值。但是不要被这个假象所蒙蔽,实际上这个传入函数的值是对象引用的拷贝,即传递的是引用的地址值,所以还是按值传递。2.示例 对基本数据类型的传递大家都知道是值传递,接下类我给出对象传递的示例。public clas
2017-05-14 10:17:31 273
原创 动态规划求字符串之间的编辑距离
1.编辑距离的概念 编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。一般来说,编辑距离越小,两个串的相似度越大。 例如site和ste两个字符串的编辑距离是1 site->ste(删除i) ste->site(插
2017-05-11 10:28:41 957
原创 全排列算法
1.递归实现全排列算法 设全排列的元素集合为S={r1,r2,r3……},Sn表示全部n个元素进行全排列的个数,则递推式为Sn=r1S(n-1)+r2S(n-2)+...+rnS(n-1);riS(n-1)的意思是以ri开头,剩下n-1个元素进行全排列的个数,显然S1=r1=1。 那么每次怎么得到以不同元素开头的S(n-1)呢,通过交换swap(当前第一个元素,后面的各个元
2017-04-07 21:16:38 323
原创 关于运行bat文件的常见问题
1.以管理员身份运行.bat文件闪退 请确保你已经安装了jdk,而且已经正确配置了环境变量。2.error:unable to access jarfile cracker.jar 敲入cmd,进入dos界面,然后把你的当前路径切换到你当前存放这个文件的路径,然后再双击执行那个run.bat文件。
2017-04-03 10:56:00 2148
原创 用JS+Html5实现一个简单的音乐播放器
1.HTML <audio> 标签定义声音,比如音乐或其他音频流。其主要属性有src:要播放的音频的 URL,controls:如果出现该属性,则向用户显示控件,比如播放按钮,autoplay:该属性用来控制自动播放。 几个主要的标签如下: <div> <h4 id="name">李玉刚 - 刚好遇见你</h4>...
2017-03-29 20:34:31 31136 12
原创 Java中重要知识点
1.String是一个类,不属于基本数据类型,属于引用类型。2.被final修饰的类不能被继承。3.String类为什么是final的,主要是为了“效率”和“安全性”。4.HashMap和HashTable的比较 HashMap是基于哈希表Map实现的,除了非同步(线程不安全)和允许使用null以外,和HashTable(父类是Dictionary)没啥区别。5.Java中的
2017-03-26 19:26:43 291
原创 C#中窗体程序中快捷键的设置
1.填写表单时摁enter键或是上下键跳到下一编辑框 private void textBox2_KeyDown(object sender, KeyEventArgs e)//keyDown事件 { if (e.KeyCode == Keys.Enter)//摁enter键,跳到你制定的编辑框 {
2017-03-25 20:40:41 3256
原创 Java不可改变字符串
1.什么是不可改变字符串 Java中的String类型是不可改变字符串,所谓的不可改变就是,一旦你对它赋值以后,它的值就不会再发生变化。 例: String a= "abc";//a = "abc" a = a+"def";//a = "abcdef" 你以为a的值已经发生了改变,但其实不是这样的,实际上Java虚拟机是重新开辟了一个内存,用来存储字符串"ab
2017-03-22 11:45:06 2404
原创 Java中==和equals的区别
1.对于数值型数据的比较 int a = 1; int b = 1; System.out.println(a==b);//true注:对于数值型类型,==就是判断两个值相等不相等,相等返回true否则返回false。2.对于Object类型 Person p1= new Person("小明"); Person p2= new Person("小明");
2017-03-20 21:46:17 236
原创 斐波那契数列的非递归实现
1.斐波那契数列是什么 在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=1,F(1)=1, F(n)=F(n-1)+F(n-2)(n>=2,n∈N*)2.为什么要非递归 递归的好处:递归的代码很清晰,可读性好 递归的坏处:递归需要使用到系统的堆栈,空间消耗比非递归高很多,递归太深的话容易造成堆栈溢出,因此我们使用非递归来计算斐波那契数列。3.代码pack
2017-03-20 21:27:47 888
原创 动态规划求最大子数组的和
1.问题 输入一个整形数组,数组中的值有正整数也有负整数,数组中连续的一个或多个整数构成一个子数组,子数组的各个整数的和称为子数组的和,求最大的子数组的和,并给出该子数组,要求时间复杂度是O(n)。2.分析 设输入数组为a,设置一个数组b,b的各个元素均初始化为0,b[0]取a[0]和0中最大的一个值,然后b[i]取b[i-1]+a[i],a[i],0中比较大的值,思想就是如
2017-03-20 19:32:49 1261
原创 Java中的隐式参数和显示参数
public class Test{ private int num; public void add(int b){ b = a + b; }} 在上面的代码中,类Test中的方法add中的形参int b就是一个显示参数,它显示地表达了出来,算式b = a+b;其实可以表示为b = this.a + b;在这里,this就是个隐式的参数,
2017-03-20 19:12:41 1955 1
原创 java数组初始化以及数组拷贝
1.数组的声明 int[] a ;//这里只是声明了变量a,并没有将a初始化为一个真正的数组 int[] a = new int[100];//这里创建了一个可以存储100个整数的数组,当创建数值数组时,所有的元素都被初始化为0,boolean数组初始化为false,对象数组初始化为null值2.数组的初始化 int[] a = {2,4,5,7,8};//数组的长度由
2017-03-20 18:19:54 1686
原创 分治法求众数
一、思想 首先我们采用三数取中选取一个pivot,然后利用快排的partition进行划分,在分区的同时统计与pivot相等的元素的个数n(重数),如果n都大等于pivot左右 两边元素的个数,那它就是众数,否则选取比n大的分区采用同样的方法进行递归,并与原来的pivot和它的重数进行比较,选取大的,当递归结束后,众数以及它的重数就出来了。二、伪代码 GetMode(
2017-01-06 21:42:19 5233 1
原创 java实现多线程的方式以及run方法和start方法的区别
1.java实现多线程的两种方式 1)java类继承Thread类 继承Thread类是实现java多线程的一种方式,但是实际上Thread类本身实现了Runnable接口,它代表了线程的一个实例。 启动线程唯一的方法就是调用Thread类的start()方法,这时候便开启了一个新的线程。 以下附上代码:
2016-10-20 09:05:12 1242
用C#语言实现的词法分析器
2016-11-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人