- 博客(47)
- 资源 (6)
- 收藏
- 关注
原创 区间 top k
按编程之美上解法二的所述,类似快速排序的划分方法,N个数存储在数组S中,再从数组中随机选取一个数X,把数组划分为Sa和Sb俩部分,Sa平均时间复杂度为O(N)// Copyright 2012 Jike Inc. All Rights Reserved.// Author: jichenghui@jike.com(Chenghui Ji)// Date : 2012-08-24
2012-08-24 17:15:22
1428
原创 java httpclient模拟login
实现用程序代码来实现某个网站的模拟登录,本文介绍使用httpclient完成这个工作。获得登录后的Session的演示,包括 上传图片等public void login()throws Exception { HttpClient httpclient = new DefaultHttpClient(); String url = "http://59.64.131
2012-06-07 14:15:36
1869
原创 linux 下 网络编程
TCP编程的服务器端一般步骤是:1、创建一个socket,用函数socket();2、绑定server IP地址、端口等信息到socket上,用函数bind();3、开启监听,用函数listen();4、接收客户端上来的连接,用函数accept();5、收发数据,用函数send()和recv(),或者read()和write();6、关闭网络连接;7、关闭监听;
2012-05-09 16:21:11
621
原创 概率生成器
扩展解法:已 知一随机发生器,产生0的概率是p,产生1的概率是1-p,现在要你构造一个发生器,使得它构造0和1的概率均为1/2;构造一个发生器,使得它构造1、 2、3的概率均为1/3;...,构造一个发生器,使得它构造1、2、3、...n的概率均为1/n,要求复杂度最低。 只要产生的串中,0和1的个数相等,则为些串的概率就相等。PS:C(2x,x)的意思是生成2x位的二进制数,其中
2012-05-06 11:07:14
802
原创 趣味题_蚂蚁爬杆_猴子分桃
题一:有些蚂蚁在一条水平线上走动,每只蚂蚁的速率都是1cm/s。当一只蚂蚁走到水平线的任何一个端点时,它都会立刻掉下来。当两只蚂蚁碰到一起时他们都会立刻调头向相反方向移动。我们知道蚂蚁们在水平线上的初始位置,但不幸的是,我们不知道他们初始的运动方向。你的任务是计算所有蚂蚁从水平线上掉下来可能所需的最早和最晚的时间。掉头转向 等效于 擦肩而过,继续爬行 思想
2012-05-05 14:39:39
895
原创 java JNI 调用
Jni程序开发的一般操作步骤如下:l 编写java中的调用类l 用javah生成c/c++原生函数的头文件l c/c++中调用需要的其他函数功能,实现原生函数(原则上可以调用任何资源)l 将项目依赖的所有原生库和资源加入到java项目的java.library.pathl 生成java程序l
2012-04-26 21:14:17
5238
3
原创 c++ 编码转化
//UTF-8到GB2312的转换char* U2G(const char* utf8){int len = MultiByteToWideChar(CP_UTF8, 0, utf8, -1, NULL, 0);wchar_t* wstr = new wchar_t[len+1];memset(wstr, 0, len+1);MultiByteToWideChar(CP_UTF8, 0
2012-04-24 23:44:57
1148
原创 putty SSH tunnel
参考文献: http://oldsite.precedence.co.uk/nc/putty.html通过putty client 设置 ,可以 通过tunnel 方式 来实现 远程 服务器 的特定端口访问。如 要访问远程服务器 ip : 10.68.35.14 , mysql 端口:3306而此时该服务器的3306端口,没有对外开放,所以可以通过 putty tu
2012-03-15 14:35:34
952
原创 win pe模式安装win7 ,安装程序无法定位现有系统分区,也无法创建新的系统分区
使用win pe模式安装win7(32位)的时候出现“安装程序无法定位现有系统分区,也无法创建新的系统分区”提示。网上很多对此问题没有很好的解决办法,下行之有效的方法推荐给大家!第一步:把win7镜像ISO文件在你电脑硬盘上。第二步:重启机器,通过U盘启动,进入PE系统。关于这点我说一下,有些朋友也许不知道什么叫win pe系统,这个win pe究竟有什么用途,其实你可以把wi
2012-02-26 16:54:09
6017
原创 mysql 中文乱码
1.在my.ini里面改[mysql]default-character-set=gbk[mysqld]default-character-set=utf8重启服务,然后在mysql client执行下列命令查看,如果有这样的结果就OKmysql> show variables like 'chara%';+--------------------------+
2012-02-24 13:33:58
787
转载 后缀数组
1. 概述后缀数组是一种解决字符串问题的有力工具。相比于后缀树,它更易于实现且占用内存更少。在实际应用中,后缀数组经常用于解决字符串有关的复杂问题。本文大部分内容摘自参考资料[1][2]。2. 后缀数组2.1 几个概念(1)后缀数组SA 是一个一维数组,它保存1..n 的某个排列SA[1],SA[2],……,SA[n],并且保证Suffix(SA[i]) (2)名次数组
2011-12-28 16:41:20
1000
翻译 native2ascii
背景:在做Java开发的时候,常常会出现一些乱码,或者无法正确识别或读取的文件,比如常见的validator验证用的消息资源(properties)文件就需要进行Unicode重新编码。原因是java默认的编码方式为Unicode,而我们的计算机系统编码常常是GBK等编码。需要将系统的编码转换为java正确识别的编码问题就解决了。 1、native2ascii简介:native2ascii是
2011-11-16 15:24:12
404
转载 mysql 数据导入与导出
在DOS的 MYSQL安装目录/BIN 目录下用下面命令:mysql -u username -p databasename use database_name然后使用下面这个命令mysql>source 111.sql当默认111.sql路径时,必须放在mysql里的bin里成功导入!!!~~Yeah..1.导出整个数据库 mysqldump -u 用户名 -p 数
2011-11-05 12:37:16
527
原创 最小正序列和
#include #include using namespace std;//最小正子序列和(minimun subsequences sum)const int MAXINT=999999;struct Node{ int sum; int xia
2011-09-19 16:55:09
1747
原创 Apriori算法简介
关联规则的目的在于在一个数据集中找出项之间的关系,也称之为购物蓝分析 (market basketanalysis)。例如,购买鞋的顾客,有10%的可能也会买袜子,60%的买面包的顾客,也会买牛奶。这其中最有名的例子就是"尿布和啤酒"的故事了。关联规则的应用场合。在商业销售上
2011-08-22 10:29:16
6731
原创 lucene 原理
Lucene是一个高性能的java全文检索工具包,它使用的是倒排文件索引结构。该结构及相应的生成算法如下: 0)设有两篇文章1和2 文章1的内容为:Tom lives in Guangzhou,I live in Guangzhou too. 文章2的内
2011-08-16 16:56:09
676
原创 最长上升子序列NLOGN算法
http://boj.me/onlinejudge/showproblem.php?problem_id=1836DescriptionComic Board是个神奇的地方,宽阔的AC河笔直地穿过这片土地。ComicBoard有N个国家(编号从1至N),每个国家在河两岸各有7座城池,象征着七色的彩虹。城市沿着河岸一字排开,构成了一幅美丽而壮阔的山水长卷。现在Comic Board的
2011-07-26 23:11:17
1058
原创 编码_配置问题
英文 windows 下 在程序运行前加入 setlocale(LC_CTYPE, "chs");则用C++读写GBK文件和 在windows 中文系统一样,不会出现乱码问题在linux下,自己的目录下bashrc文件下加入一句export LANG=zh_C
2011-07-06 13:21:00
516
原创 几道面试题
/*在一个int数组里查找这样的数,它大于等于左侧所有数,小于等于右侧所有数。直观想法是用两个数组a、b。a[i]、b[i]分别保存从前到i的最大的数和从后到i的最小的数,一个解答:这需要两次遍历,然后再遍历一次原数组,将所有data[i]>=a[i-1]&&data[i]给出这个解答后,面试官有要求只能用一个辅助数组,且要求少遍历一次。则只要在上述思想上进行改进一
2011-06-28 15:55:00
646
原创 单调队列
一个含有 n 项的数列(n 用 f(i) 代表第 i 个数对应的答案, a[i] 表示第 i 个数,很容易写出状态转移方程:f(i) = min(a[j]), i -m + 1我们维护这样一个队列:队列中的每个元素有两个域{position, value},分别代表他在原队列中的位置和 a[i],我们随时保持这个队列中的元素两个域都单调递增。那计算 f(i) 的时候,只要在队首不断
2011-06-28 12:26:00
603
原创 Scrum
Scrum是一种迭代式增量软件开发过程,通常用于敏捷软件开发下面是Scrum用到的术语:角色 产品负责人 Product Owner: 负责维护产品订单的人,代表利益相关者的利益。 Scrum主管 Scrum Master: 为Scrum过程负责的人,确保scrum的正确使用并使得Scrum的收益最大化。一般不翻译。
2011-06-27 13:33:00
537
原创 连续元素划分,二分答案
把一个有n的非负元素的数组划分为k部分(各个部分的元素在原数组中必须是连续的,就是{i, i+1,...,j}),使得k个部分各个部分元素的和中的最大值最小,返回这个值。比如把{10, 20, 30, 40, 50, 60, 70, 80, 90}划分为3部分,那么这种划分是一种方案:第一部分:10 20 30 40 50第二部分:60 70第三部分:80 90 http:
2011-06-17 11:43:00
747
原创 假设x[m], y[n]是两个排好序的数组,并且没有重复元素,要找第k小的元素
分析与解答:假设:第k小的元素在x数组中,为x[mid] , 则有 y[k-mid] 0(1) 当 y[k-mid] (2) 当 x[mid] (3)当 x[mid] > y[k-mid+1]时, 说明此时x[mid]太大了,hight = mid - 1 所以查找时只要 先假设在 x中,查找一次,如果没找到 则在y中在查找一次就行了。传入的参数中 high =
2011-06-15 15:54:00
1071
转载 指针
[转]这篇文章摘自网易广州社区的C语言版精华区。文章不错,不敢独享!作者girlrong是以前C语言版版主,她乐于助人,虚心诚恳,颇受网友欢迎。只可惜现在已退隐江湖了。 第一章。指针的概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身
2011-06-13 14:17:00
454
原创 统计1到n之间的所有数字中1出现的个数
int main() { int iFactor = 1, iLowerNum, iCurNum, iHighNum; int n; scanf("%d",&n); int res = 0; while(n / iFactor) { iLowerNum = n - (n / iFacto
2011-06-13 12:15:00
1012
原创 在二元树中找出和为某一值的所有路径
题目:输入一个整数和一棵二元树。从树的根结点开始往下访问一直到叶结点所经过的所有结点形成一条路径。打印出和与输入整数相等的所有路径。例如输入整数22和如下二元树 10 / /
2011-05-12 21:33:00
555
原创 最近公共祖先
/////////////////////////////////////////////////////////////////////////////////// Get the path form pHead and pNode in a tree with head pHead/////////////////////////////////////////////////////////////////////////////////bool GetNodePath(Tre
2011-05-12 21:28:00
906
翻译 java ByteBufferStringOperation.java 非阻塞爬虫..
package common;import java.io.UnsupportedEncodingException;import java.nio.ByteBuffer;public class ByteBufferStringOperation { public static String ByteBufferToString(ByteBuffer buffer) throws UnsupportedEncodingException { buffer.fl
2011-05-09 16:21:00
946
原创 整数分解,输出所有分解方案
如,对于正整数n=6,可以拆分为:65+14+2, 4+1+13+3, 3+2+1, 3+1+1+12+2+2, 2+2+1+1, 2+1+1+1+11+1+1+1+1+1+1现在的问题是,对于给定的正整数n,程序输出该整数的拆分种类数(HDOJ 1028)。DP思路:n = n1 + n2 + n3 + n4 + .... + nk状态表示:将n划分为k
2011-04-25 16:30:00
1370
原创 构造一个队列,使front,push,getMaxElement都是O(1)时间
<br />#include <iostream>using namespace std;const int MAXLEN = 50;const int INF = 99999999;/*构造一个队列,使front,push,getMaxElement都是O(1)时间思路:由于更新大小关系要考虑到后面的元素,如 1(1) 2(2) 此时来了个 3,则前面的最大元素都要改,所以 用栈来保存元素间的大小关系比较合适*/class stack{private:
2011-04-24 21:15:00
902
原创 C++函数参数中的省略号
<br />C++允许定义形参个数和类型不确定的函数。例如,C语言中的标准函数printf便使用这种机制。在声明不确定形参的函数时,形参部分可以使用省略号“…”代替。“…”告诉编译器,在函数调用时不检查形参类型是否与实参类型相同,也不检查参数个数。<br /><br />例如:<br /><br />void ConnectData(int i,...)<br /><br />在上面的代码中,编译器只检查第一个参数是否为整型,而不对其他参数进行检查。<br /><br />对于可变参数的函数,需要进行特殊的
2011-04-21 10:51:00
1052
原创 根据上排给出十个数,在其下排填出对应的十个数
<br />#include <iostream>using namespace std;int judge(int arrGiven[],int arrDest[],int len){ int flag = 0; while(!flag) { //统计第一行的元素 在第二行里出现的次数 for(int i=0;i<len;i++) { int cnt = 0; for(int j=0;j<len;j+
2011-04-18 14:03:00
723
原创 二元查找树转变成排序的双向链表
<br />输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。<br />要求不能创建任何新的结点,只调整指针的指向。<br />#include <iostream>#include <stack>using namespace std;struct node{ node* lchild; node* rchild; int data; node(int v) { lchild = rchild =NULL; data = v;
2011-04-17 16:15:00
540
原创 a1,a2,...,an,b1,b2,...,bn,
#include using namespace std; /* 输入a1,a2,...,an,b1,b2,...,bn, 在O(n)的时间,O(1)的空间将这个序列顺序改为a1,b1,a2,b2,a3,b3,...,an,bn, 且不需要移动,通过交换完成,只需一个交换空间。 一 a1a2a3a4 b1b2b3b4 a1a2b1b2 a3a4b3b4 二 a1
2011-04-15 19:56:00
1909
原创 全排列的输出
#include #include using namespace std; template /*把升序的排列(当然,也可以实现为降序)作为当前排列开始,然后依次计算当前排列的下一个字典序排列。对当前排列从后向前扫描,找到一对为升序的相邻元素
2011-04-14 22:16:00
813
原创 排序算法
计数排序计数排序, 基数排序, 桶排序等非比较排序算法,平均时间复杂度都是O(n). 这些排序因为其待排序元素本身就含有了定位特征,因而不需要比较就可以确定其前后位置,从而可以突破比较排序算法时间复杂度O(nlgn)的理论下限.计数排序是最简单的特例,它要求待排序元素是位于0到k之间的正整数, 因而它是很特殊的情况,基本上没有特别的应用价值; 但是另一方面, 它又是基数排序的基础,或者说是一部分,所以简单的描述一下:输入数组 A : 元素特征是 0-k的正整数,可以有重复值;输出数组 B : 输出A的一个非
2011-04-14 19:56:00
480
原创 通配符匹配问题
/* 在一篇英文文章中查找指定的人名,人名使用二十六个英文字母(可以是大写或小写)、空格以及两个通配符组成(*、?),通配符“*”表示零个或多个任意字母,通配符“?”表示一个任意字母。如:“J* Smi??” 可以匹配“John Smith” .请用C语言实现如下函数:void scan(const char* pszText, const char* pszName);注:pszText为整个文章字符,pszName为要求匹配的英文名。请完成些函数实现输出所有匹配的英文名,除了
2011-04-13 22:18:00
1191
原创 二叉树的构建与遍历
<br /> <br /> <br /> <br /> //已知中序和层次遍历序来生成二叉树#include <stdlib.h>#include <stdio.h>#include <string.h>typedef char type;static int levels = 0;struct node{ type key; node * left; node * right;};node * fun(type arrLev
2011-04-13 12:04:00
745
原创 二分查找算法
#include using namespace std;//假设arr都是升序//int arr[9]={1,1,1,1,1,1,1,1,1};int arr[9] ={0,0,1,1,1,3,4,4,5};/*给定一个有序(不降序)数组arr,求最小的i使得arr[i]等于v,不存在返回-1*/int BiSearch1(int s ,int e,int v ){ if(s > e) return -1; while( s
2011-04-12 22:15:00
693
原创 求二叉树中节点的最大距离,编程之美3.8
// 求二叉树中节点的最大距离,编程之美3.8#inlcude using namespace std;struct Node{ Node *lchild; Node *rchild; //data}; //因为最大距离,一定是已树中某点为根 的左右子树高度之和 int get_max_distance(tree* root,int& maxlen){ if(root==null) return 0;//空结点返回0
2011-04-07 19:27:00
1065
java 调用hownet
2012-05-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人