- 博客(15)
- 收藏
- 关注
原创 用位操作求加法
/** * 不用+法做加法 * @author liyiwen1 * @date 2016/12/21 */public class BitAdd { public static void main(String[] args) { System.out.println(add(1,2)); System.out.println(add(1,3))
2016-12-21 18:01:21 501
原创 采用回溯法打印1到最大的位数
打印1到最大的位数,算法采用回溯法控制台输出: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
2016-12-21 17:18:38 361
原创 用筛选法求解n以内的所有素数
筛选法的思想是一个数是素数则这个数的所有的倍数都是合数,我们不去找素数而去找合数,剩下的就是素数了。一个合数其最大的质因子不会超过其开发数,所以只要迭代到其最大数的开方数即可一个简单的筛素数的过程:n=30。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
2016-12-18 21:42:57 5139
原创 用回溯法求解打靶问题
打靶打10次,打中90环的可能性有多少?用回溯法实现:控制台输出:递归实现:打10次90环的可能性:92378种迭代实现:打10次90环的可能性:92378种package AlgorithmTest;import java.util.Stack;/** * Created by dell on 2016/12/18. */public c
2016-12-18 18:06:22 472
原创 回溯法,并用回溯法请求0/1背包问题和皇后问题
穷举法是所有最优化问题和多解问题的通用解法。在用穷举法求解的过程中,很多候选的解可以在求解中途被约束条件淘汰点,从而降低求解的复杂度。基于这种思想引出了回溯法。回溯法是穷举法的一个改进,因为它也是一种通用的算法。一个问题可能会有多种可能解,这些可能解构成的问题的可能解空间, 可能解空间不是解的集合而是可能解的集合,解空间是可能解的一个子集。问题的解会从解空间中出。回溯法的基本思想是将问
2016-12-18 12:31:11 1377
原创 用回溯法求解0/1背包问题
输出如下:背包所盛放物品的最大价值为:60所盛放物品编号为[1, 2]代码如下:package AlgorithmTest;import java.util.ArrayList;import java.util.Collections;/** * Created by dell on 2016/12 *用回溯法求解01背包问题,回溯法可以求解最
2016-12-18 01:17:35 4782
原创 打印图形
打印如上图形:控制台输出:**.*.*..*..*..*...*...*...*...*....*....*....*....*....*.....*.....*.....*.....*.....*.....*......*......*......*......*......*......*......*.......*.......*.......*....
2016-12-17 17:07:06 2482
原创 i++和++i在多线程中的表现,volatile和加锁
只有加锁够得出争取的结果:控制台输出:i++的结果:1000012113++i的结果:1000003505volatile i++的结果:1018584689volatile ++i的结果:995483979加锁 i++的结果:2000000000加锁 ++i的结果:2000000000测试代码如下:/public c
2016-12-17 16:18:34 1477
原创 java中的wait(time), notify(), notifyall?是怎么回事?内核层面的实现也是如此
结论:wait(time), notify(), notifyall?一个线程拿到一个对象上的锁,才能调用这个对象的wait(time),notify,notifyall!!!否则会抛异常。线程没有休眠和苏醒的概念,只有从调度队列排除和加入的概念。前者两个概念要误导人!!调用wait(time)会做3件事:1、使当前线程加入当这个对象的等待线程集合,这个是为什么线程要拿到这
2016-12-17 15:08:12 1004
原创 平衡二叉树的实现 java
平衡二叉树的实现:程序输出结果为:前序遍历结果:8 5 2 7 6 9 69 中序遍历结果2 5 6 7 8 9 69 两种遍历结果可以唯一确定一颗二叉树,从而得出二叉树如下图所示:为一颗平衡二叉树。 代码如下所示:package AlgorithmTest;/**
2016-12-15 00:17:39 760
原创 并查集
import java.util.*;/** * @author liyiwen1 * @date 2016/12/8 */public class MergingFindingSet { public static void main(String[] args) { resolveProblem1UsingMergingFindSet();
2016-12-09 11:15:45 377
原创 trie树的实现和应用及测试
测试输出为:按字典顺序输出trie树中所有的字符串 递归实现: abc abc abcd aca adac ava bda按字典顺序输出trie树中所有的字符串 迭代实现: abc abc abcd aca adac ava bda是否出现字符串ava:true前缀a出现的次数:6输出还有前缀的ab的所有字符串:abc
2016-12-07 22:32:47 530
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人