`
viking.liu
  • 浏览: 53653 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表

ibatis 工具 abator

Abator是一个用于iBATIS的代码生成器,它能够为iBATIS Sql Mapper(包括:SqlMap XML文件, Java domain classes, 和Java DAO classes)生成artifacts。 1. 介绍 Abator 是一款iBATIS代码生成工具。它从数据库获取信息,然后产生如下文件。 1) 数据库表的SqlMap.xml file 文件,如UserSQL.xml; 2) 数据库表的Java Bean Model,如User.java; 3) 包含一个综合主键的数据库表的主键model,如UserKey.java; 4) 包含DAO层 selectByE ...
基本思路是对需要查找的节点赋权值为1,其它节点权值为0.那么只要找到一个节点的左右权值都不为1的点就是需要查找的公共父节点。 static class Node { String value; Node left; Node right; } static Node parent; public static int findParent(Node root, Node first, Node second) { if (root == null || parent != null) { // Accelerate check re ...
树中任意两个节点之间的距离是指,从一个节点到另一个几点之间的一条路径。 如果路径上边的权值为1,其它权值为0,那么其实就是计算树的权值。 那么怎样该点是不是在这条路径中呢? 其实并不难,只要我们知道左子树和右子树的权值就可以判断了。 如果左子树和右子树的权值都为0,那么该节点肯定不在要查找的路径上。 否则该节点肯定在查找的路径上。如果左右子树权值都不为0,那么当前节点为公共父节点 ,查找结束了,但是递归并不能停下来,所以要标示一下。 static boolean finished = false; public static int findPath(Node root, Node ...
package www.viking.com.algorithm; public class MinSteps { /** * @param args * 5,7,12加减运算表示任意n的最少个数 * * 也就是 5x+7y+12z=n * * 求|x|+|y|+|z|的最小值 * * 方法一:动态规划的思想 * * 首先正数和负数的性质一样的,所以只考虑正数的情况 * 我们 ...
问题:y=ax+b; 有很多线段{x0,y0,x1,y1}{x2,y2,x3,y3}{x4,y4,x5,y5}....{xn-1,yn-1,xn1,yn} (xi,yi)在直线上,判断这些线段是否存在重合 思路: 首先,知道x可以根据y=ax+b算出y,又因为是直线,所以x与y是一一对应的 如果{xi,yi,xi+1,yi+1}与{xj,yj,xj+1,yj+1}有重合区域, 0<=i,j<n 那么这两条线段投影到x轴上也是有重合区域的,如果没有重合区域,那么投影也不会有重合区域 这样就可以将原问题转化成x轴上的线段是否有重合区域,与y无关了。 问题就变得简单了,直线在x轴 ...
问题: 有很多区间,比如[1.1,3.4] [1,3] [-1,3] [2.5,6]..... 求区间重合次数最多的 比如上面[2.5,3]被重合了4次 思路: 用a[n][2]存储所有的区间,a[n][0]存储区间的开始值,a[n][1]存储区间的结束值,并且 a[n][0]<a[n][1] 首先将a[n][2]排序,按照起始点进行排序,升序,那么就会得到所有区间的起始点有序。 遍历a[n][2],比较a[i][1]与a[i+1][0],a[i+2][0]...(0<=i<n).比较直到a[k][0]>a[i][0]为止或者i=n-1,第i+1区间与其它所有区间的 ...
比如1 2 3 4 5              循环移位1位 5 1 2 3 4              循环移位2位 4 5 1 2 3              循环移位3位 3 4 5 1 2              循环移位4位 2 3 4 5 1              循环移位5位 1 2 3 4 5   可以看出,当移动n位时还原了,数据没有变化。 所以当移动k位>n时,只需移动k%n即可  最简单的方法就是1位1位的移动,如果移动k位,移动k次,但是这样的效率很低,每个数都要移动k次,一共要移动k*n次。 在编程之美上有一种做法,是将前n-k位逆序,在将 ...
package www.viking.com.algorithm; public class MaxSubMatrixSum { /** * @param args * * 求子矩阵的最大和 * | a11 …… a1i ……a1j ……a1n | * | a21 …… a2i ……a2j ……a2n | * | . . . . . . . | * | . . . . . . . | * | ar1 …… ari ……arj ……arn | ...
package www.viking.com.algorithm; public class MaxSubSquenceSum { /** * @param args * * 最大字段和 * * b为字段累加和 * * b=b>0?b+a[i]:a[i] * * 并且记录最大的b * */ public static void main(String[] args) { int[] a = { -1, 3, -3, 4, 5, -2, 20 }; System.out.p ...

博弈 问题

题:有甲乙两个人,有100个物品,每个人每次只能拿 2,4,6个物品,轮流拿,谁拿着最后一个物品谁就赢,请问甲先拿有没有不必胜策略。 其实这种题,一般先拿的都有必胜把握,掌握先机麻。 求解: 如果想要拿到最后一个只能是最后一轮剩下8个,无论乙拿多少,甲都能拿到最后一个       如果乙拿2个,甲拿6个,       如果乙拿4个,甲拿4个,       如果乙拿6个,甲拿2个, 其实答案就出来了,只要保证每次乙拿x个,甲拿8-x个就能使甲想拿最后哪个就是哪几个 100%8=4, 甲先拿4个,然后无论乙拿几个,甲只要保证和乙拿的之后为8就行了。 这种题还有很多类似的,但是解体思路都是 ...
有重复数的全排列和全排列的算法是一样的 只不过要去掉重复的序列 122的全排列 122 212 221 一共三种 三个数的全排列是6种,其中有3种重复了。 其实关键问题就是怎么从全排列中去掉重复的 理解全排序的过程,从begin到i-1的数据都与begin交换过, 如果第i的数据与前面begin到i-1中的数据有重复,那么不用交换了 设 a[i]=x 存在 a[j]=x , begin<=j<=i-1 根据 全排列的递归公式知道 Perm(Ri)=Perm(Rj) 所以 Perm(Ri)为重复的需要去掉 package com.viking.divide; public c ...
package com.viking.divide; public class DuplicateCombination { public static void main(String[] args) { int[] a = { 1, 2, 3 ,3}; System.out.println(perm(a, 0)); } public static int perm(int[] a, int begin) { int count = 0; boolean isorder = true; String path = "&q ...
无重复数的组合问题 就是集合的所有非空子集 比如 {1,2,3} 的组合结果是 {1},{2},{3} {1,2}{1,3}{2,3} {1,2,3} 组合跟关键字的排列顺序无关 利用全排列算法求解 全排列算法可以求出集合所有的子集排列 所以 组合就是全排列的一个子集 ...
n个字符中长度为m的全排列 public class MNPerm { public static void main(String[] args) { int[] a = { 1, 2, 3 ,4}; int m=2; System.out.println(perm(a, 0,m)); } public static int perm(int[] a, int begin,int m) { if (begin == m) { for (int i = 0; i < m; i++) { System.out.print(a[ ...
比如 123 1 2 3 12 21 13 31 23 32 123 132 213 231 312 321 public class SubPerm { public static void main(String[] args) { int[] a = { 1, 2, 3, 4 }; System.out.println(perm(a, 0)); } public static int perm(int[] a, int begin) { int count=0; for (int i = 0; i < begin; i++) { ...
Global site tag (gtag.js) - Google Analytics