- 博客(37)
- 资源 (1)
- 收藏
- 关注
转载 建立三个线程,A线程打印10次A,B线程打印10次B,C线程打印10次C,要求线程同时运行,交替打印10次ABC。
/** * 建立三个线程,A线程打印10次A,B线程打印10次B,C线程打印10次C,要求线程同时运行,交替打印10次ABC。 * 这个问题用Object的wait(),notify()就可以很方便的解决。 * * 主要的思想就是,为了控制执行的顺序,必须要先持有prev锁,也就前一个线程要释放自身对象锁,再去申请自身对象锁, * 两者兼备时打印,之后首先调用self.notify()
2016-08-31 10:41:37 769
原创 按之字形顺序打印二叉树
请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层 按照从左到右的顺序打印,第三行再按照从左到右的顺序打印,其他行依次类推。 思路:按照之字形顺序打印二叉树需要两个栈。当打印某一行节点时,把下一行的子节点保存到相应的栈里。如果当前打印的是奇数层,则先保存左子节点再保存右子节点到第一个栈里;如果当前打印的是偶数层,则先保存右子节点再保存左子节点到第二个栈中。
2016-08-30 11:35:07 317
原创 二叉搜索树的查找、添加和删除操作
class Node{ int data; Node lChild; Node rChild; public Node(int data){ this.data=data; this.lChild=null; this.rChild=null; }}public class Tree { public static void main(String[] arg
2016-08-29 18:45:31 539
原创 查找两个字符串a,b的最长公共子串
对于两个字符串a、b,开辟一个大小为[a.length()+1][b.length()+1]的二维整型数组,初始化第一行和第一列为0,对于其他的每一个a[i][j],如果字符串a的第i个字符与字符串b的第j个字符相等,那么a[i][j]=a[i-1][j-1]+1,否则a[i][j]=0。import java.util.Scanner;public class Main{ pub
2016-08-28 15:56:59 619
原创 使用FileUpload组件上传文件
所需jar包:commons-fileupload.jar commons-io.jarjsp页面: 上传文件 <form action="${pageContext.request.contextPath}/uploadServlet" method="post" enctype="multipart/for
2016-08-27 22:06:47 546
原创 在二元树中找出和为某一值的所有路径
请写一个程序创建一棵二元树,并按照一定规则,输出二元树根节点到叶子节点的路径。规则如下:从最顶端的根结点,到最下面的叶子节点,计算路径通过的所有节点的和,如果与设置的某一值的相同,那么输出这条路径上的所有节点。从根节点遍历树时,请请按照左到右遍历,即优先访问左子树的节点。比如下面一些转化的例子:输入"10,5,12,4,7"值,构造的树如下(注意:构造二元树时,需要从上到下一层一层
2016-08-27 11:12:12 365
原创 Spring整合hibernate
实体类:public class Users { private int id; private String username; private String pwd; public Users(){ } public Users(String username, String pwd) { this.username = username; this.pwd
2016-08-26 16:24:29 375
原创 用递归找出数组中最小的元素
public static int min(int[] a,int n){ if(n==0){ return a[n]; } return a[n]<min(a,n-1)?a[n]:min(a,n-1); }
2016-08-26 11:08:47 791
原创 Spring AOP的xml配置和注解配置
接口:public interface Api { public String run(String param);}实现类:public class Target implements Api { @Override public String run(String param) { System.out.println("被代理的方法"); return "这是一
2016-08-25 17:08:07 519
原创 筛选法求素数
如果一个数为素数,那么它的倍数一定是合数。由此可得,对于求n以内的素数,分配一个大小为n+1的boolean类型的数组,首先将下标为奇数的boolean量置为true,然后3开始筛选。import java.util.Scanner;public class Main{ public static void main(String[] args) { Scanner scanner=
2016-08-25 11:02:29 422
原创 华为oj--坐标移动
开发一个坐标计算工具, A表示向左移动,D表示向右移动,W表示向上移动,S表示向下移动。从(0,0)点开始移动,从输入字符串里面读取一些坐标,并将最终输入结果输出到输出文件里面。 输入: 合法坐标为A(或者D或者W或者S) + 数字(两位以内) 坐标之间以;分隔。 非法坐标点需要进行丢弃。如AA10; A1A; $%$; YAD; 等。 下面是一个简单的例子 如: A10;S20;W10;D
2016-08-25 10:38:08 291
原创 Spring3.1 AOP开发依赖jar包
spring3.1不再把那些依赖的第三方jar包打包进来。,除了引入spring框架dist目录下的org.springframework.aop-3.1.1.RELEASE.jar之外,还需要自己下载第三方依赖包:aspectjrt.jar,aspectjweaver.jar,aopalliance.jar下载地址:
2016-08-24 22:29:00 1469
原创 普利姆算法
普里姆算法的基本思想:普里姆算法是一种构造最小生成树的算法,它是按逐个将顶点连通的方式来构造最小生成树的。从连通网络N = { V, E }中的某一顶点u0出发,选择与它关联的具有最小权值的边(u0, v),将其顶点加入到生成树的顶点集合U中。以后每一步从一个顶点在U中,而另一个顶点不在U中的各条边中选择权值最小的边(u, v),把该边加入到生成树的边集TE中,把它的顶点加入到集合U中。如此重
2016-08-24 12:07:17 10586
原创 称砝码
现有一组砝码,重量互不相等,分别为m1、m2……mn;他们可取的最大数量分别为x1、x2……xn。现在要用这些砝码去称物体的重量,问能称出多少中不同的重量。输入 int n:n表示有多少组重量不同的砝码,1int[] weight:表示n组砝码的重量,1int[] num:表示n组砝码的最大数量,1输出利用给定的砝码可以称出的不同
2016-08-23 17:58:41 385
原创 最短路径
public class Demo { public static void main(String[] args) { int[][] graph=new int[][]{{65535,65535,10,65535,30,100}, {65535,5,65535,65535,65535,65535}, {65535,65535,65535,50,655
2016-08-23 13:31:22 170
原创 华为oj--迷宫问题
定义一个二维数组N*M(其中2int 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,};它表示一个迷宫,其中的1表示墙壁,0表示可以走的路,只能横着走或竖着走,不能斜着走,要求编程序
2016-08-22 12:13:48 1321
原创 图的邻接表存储
邻接表是图的一种链式存储结构。在邻接表中,对图中每个顶点建立一个单链表,第i个单链表中的节点表示依附于顶点Vi的边。import java.util.Scanner;class Node{ String point; //顶点 int value; //权值 Node next;}public class Graph { public static void
2016-08-22 10:15:21 288
原创 二叉树的非递归遍历
import java.util.Stack;class Node{ String data; Node lChild; Node rChild; public Node(String data){ this.data=data; this.lChild=null; this.rChild=null; }}public class Demo { public
2016-08-21 17:02:29 319
原创 整数与ip地址之间的转换
整数与IP地址间的转换题目描述原理:ip地址的每段可以看成是一个0-255的整数,把每段拆分成一个二进制形式组合起来,然后把这个二进制数转变成一个长整数。举例:一个ip地址为10.0.3.193每段数字 相对应的二进制数10 000010100 000000003
2016-08-21 10:29:26 830 1
原创 spring ioc的简单实现
spring ioc的原理就是通过解析xml文件,然后通过反射机制创建我们所需要的类的实例,这些实例放在一个“”容器“”中测试xml文件如下: 解析xml文件的类如下,使用DOM解析来解析xml文件import java.lang.reflect.Method;import java.util.HashMap;import java.u
2016-08-20 23:15:33 192
转载 spring下载
原文 http://yanln.iteye.com/blog/2191312无论学习编程语言还是框架,个人认为与其花大量的时间搜资料,不如静心好好学习官网,官网是最好的学习资料(权威、准确的第一手材料)。 一、spring的官方网址:http://spring.io/ 二、看到这个简洁清新的界面,导航很明确,进入projects whatever th
2016-08-20 13:10:24 222
转载 堆与堆排序
堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。学习堆排序前,先讲解下什么是数据结构中的二叉堆。二叉堆的定义二叉堆是完全二叉树或者是近似完全二叉树。二叉堆满足二个特性:1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。当父结点的键值总是大于或等于任何一个子节
2016-08-20 11:32:59 302
原创 去除数字里多余的零
public static String getplainNumber(String number) { return BigDecimal.valueOf(Double.valueOf(number)) .stripTrailingZeros().toPlainString(); }
2016-08-12 10:15:24 514
原创 华为oj--走格子
请编写一个函数(允许增加子函数),计算n x m的棋盘格子(n为横向的格子数,m为竖向的格子数)沿着各自边缘线从左上角走到右下角,总共有多少种走法,要求不能走回头路,即:只能往右和往下走,不能往左和往上走。解题思路:对于一个n*m的格子,由题意,若右走则变成n*(m-1)的格子,若往下走则变成(n-1)*m的格子,由此可得递推关系式 f(n,m)=f(n-1,m)+f(n,m-1),又当格
2016-08-12 08:55:23 1194
原创 回型矩阵
给定正整数n,输出一个n*n的矩阵,如n=3,输出矩阵如下: 1 2 3 8 9 4 7 6 5import java.util.Scanner;class Fun{ public void fun(int[][] a,int n,int k,int count,int N){ if(n<=0) return;
2016-08-11 13:37:34 1114
原创 放苹果
把M个同样的苹果放在N个同样的盘子里,允许有的盘子空着不放,问共有多少种不同的分法?(用K表示)5,1,1和1,5,1 是同一种分法。解题思路:看到这道题目,首先想到的是数学里的排列组合的插空法,即将N个盘子插到M+1个位置。首先将第N个盘子固定在第M+1个位置,然后其余每个盘子都有M种可能,递归调用,去除不合格的结果,即为所求。总结:看网上别人都是通过递推式求解的,效率很高。相比之下,我
2016-08-11 10:06:44 386
原创 字符串合并处理
按照指定规则对输入的字符串进行处理。详细描述:将输入的两个字符串合并。对合并后的字符串进行排序,要求为:下标为奇数的字符和下标为偶数的字符分别从小到大排序。这里的下标意思是字符在字符串中的位置。对排训后的字符串进行操作,如果字符为‘0’——‘9’或者‘A’——‘F’或者‘a’——‘f’,则对他们所代表的16进制的数进行BIT倒序的操作,并转换为相应的大写字符。如字符为‘4’,为0100b,则翻转后
2016-08-10 10:36:46 339
原创 sunday算法
sunday算法的概念如下:Sunday算法是Daniel M.Sunday于1990年提出的一种比BM算法搜索速度更快的算法。其核心思想是:在匹配过程中,模式串并不被要求一定要按从左向右进行比较还是从右向左进行比较,它在发现不匹配时,算法能跳过尽可能多的字符以进行下一步的匹配,从而提高了匹配效率。假设在发生不匹配时S[i]≠T[j],1≤i≤N,1≤j≤M。此时已经匹配的部分为u,并假设
2016-08-10 08:35:39 309
原创 表达式求值
这是刚学数据结构时候碰到的题了,当时还觉得有点难,现在又碰到了这道题,理清思路后还是把它编出来了。这道题核心思想是将中缀表达式转换为后缀表达式。我用了两个栈来实现这个操作。解析输入的字符串,如果是数字则入数字栈,是操作符则比较当前操作符和操作符栈顶操作符的优先级,若当前操作符优先级较高,则从数字栈中弹出两个数进行运算,否则将当前操作符压入栈中,其中‘)’不入栈并弹出‘(’。import jav
2016-08-09 10:04:08 191
原创 素数伴侣
若两个正整数的和为素数,则这两个正整数称之为“素数伴侣”,如2和5、6和13,它们能应用于通信加密。现在密码学会请你设计一个程序,从已有的N(N为偶数)个正整数中挑选出若干对组成“素数伴侣”,挑选方案多种多样,例如有4个正整数:2,5,6,13,如果将5和6分为一组中只能得到一组“素数伴侣”,而将2和5、6和13编组将得到两组“素数伴侣”,能组成“素数伴侣”最多的方案称为“最佳方案”,当然密码学会
2016-08-08 15:04:19 1198
原创 二叉树的相关操作(递归)
二叉树节点定义public class Node { int data; Node leftChild; Node rightChild;}一些二叉树的操作import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;import java.util.Stack;
2016-08-05 13:48:55 235
原创 滑雪问题
递归方式解决滑雪问题:import java.util.Scanner;public class Test{ static int d[][]; public static void main(String[] args) { Scanner scanner=new Scanner(System.in); int m=scanner.nextInt();
2016-08-04 15:54:06 798
原创 最长公共子序列
问题的递推式: import java.util.Scanner;public class Test{ public static void main(String[] args) { Scanner input=new Scanner(System.in); String s1=input.nextLine(); String s2=input.next
2016-08-04 11:39:22 247
原创 编辑距离算法的实现
编辑距离(Edit Distance),又称Levenshtein距离,是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。一般来说,编辑距离越小,两个串的相似度越大。例如将kitten一字转成sitting:sitten (k→s)sittin (e→i)sitting (→g)比如要计算ca
2016-08-04 10:01:55 448
原创 字符串的全排列
(1)求所有可能出现在第一个位置的字符,(2)把第一个字符和其后面的字符一一交换。如下图所示,分别把第一个字符a和后面的b、c等字符交换的情形。(3)固定第一个字符,求后面所有字符的排列。这个时候我们仍把后面的所有字符分成两部分:后面字符的第一个字符,以及这个字符之后的所有字符。然后把第一个字符逐一和它后面的字符交换 import java.util.HashSet;imp
2016-08-03 14:23:25 224
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人