2011年12月3日

摘要: [摘要]abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。[关键字]Java抽象接口 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是有很大. 阅读全文
posted @ 2011-12-03 02:49 Lovell Liu 阅读(181) 评论(0) 推荐(0) 编辑

2011年11月8日

摘要: 这几天由于工作需要,对DBSCAN聚类算法进行了C++的实现。时间复杂度O(n^2),主要花在算每个点领域内的点上。算法很简单,现共享大家参考,也希望有更多交流。数据点类型描述如下: 1 #include <vector> 2 3 using namespace std; 4 5 const int DIME_NUM=2; //数据维度为2,全局常量 6 7 //数据点类型 8 class DataPoint 9 {10 private:11 unsigned long dpID; //数据点ID12 double dimens... 阅读全文
posted @ 2011-11-08 18:24 Lovell Liu 阅读(8909) 评论(4) 推荐(0) 编辑

2011年9月23日

摘要: 例:a="abacdaabacdab"b="abacdab"a[i-j+1..i]与b[i..j]相等,随着i增加,j相应的变化,现在比较a[i+1]和b[i+1],若a[i+1]==b[i+1],则i++,j++;否则,若a[i+1]!=b[i+1],调整j的位置,使得 a[i-j+1..i]与b[i..j]保持匹配并且a[i+1]==b[i+1]。如何调整呢?j'要满足b[1..j]中的头j‘个字符与尾j'个字符完全相等,这样变了之后能继续保持i和j的性质,j'越大越好。直到j=m-1时,即b所有字符都匹配,则可返回位置。若知 阅读全文
posted @ 2011-09-23 19:10 Lovell Liu 阅读(194) 评论(0) 推荐(0) 编辑

2011年9月20日

摘要: //实现队列#include <stdio.h>#include <stdlib.h>struct Node{ int data; Node* pNext;};struct Queue{ Node* head; Node* rear;};Queue* Insert(Queue* que, int x){ Node* istNode = (Node*)malloc(sizeof(Node)); istNode->data = x; istNode->pNext =NULL; if(que->head==NULL) { que->... 阅读全文
posted @ 2011-09-20 23:48 Lovell Liu 阅读(157) 评论(0) 推荐(0) 编辑
摘要: //问题描述:// 已经n个人(1,2,3,。。。n)围坐圆桌,从编号为k的人报数,报到m那个人出列;// 他下一个人又从K开始招数,报到m那个人出列;重复直到圆桌周围人全部出列。//输出结果:// 1//2//3////4//Delete----5//Delete----7//Delete----9//Delete----11//Delete----13//Delete----2//Delete----4//Delete----8//Delete----12//Delete----3//Delete----10//Delete----6//Delete----1////循环队列... 阅读全文
posted @ 2011-09-20 23:07 Lovell Liu 阅读(291) 评论(0) 推荐(0) 编辑

2011年9月19日

摘要: zigzag数组#include "stdio.h"#include "stdlib.h"int GetNum(int i,int j, int N, const int* sum);void SUM(int N, int* sum);/*打印zigzag数组 0 1 5 6 14 15 27 28 44 45 65 66 90 2 4 7 13 16 26 29 43 46 64 67 89 91 3 8 12 17 25 30 42 47 63 68 88 92 113 9 11 18 24 ... 阅读全文
posted @ 2011-09-19 17:44 Lovell Liu 阅读(2086) 评论(0) 推荐(1) 编辑

2011年9月8日

摘要: 今天写一段代码,错的我没有反抗能力int main(){ int test[]={-2, 5, 3, -6, 4, -8, 6}; int startPos=0, endPos=0; printf("MaxSubArr=%d\nStartPos=%d\nEndPos=%d\n", GetMaxSubArr1(test, LEN(test), &startPos, &endPos), startPos,endPos); system("pause"); return 0;}调试也通了,全正确,咋就不出正确结果呢?startPos=0, en 阅读全文
posted @ 2011-09-08 20:06 Lovell Liu 阅读(486) 评论(0) 推荐(0) 编辑

2011年9月7日

摘要: 由寻找数组中最大值和最小值方法得到提示,每次比较两个数,将胜者同MAX比较,败者同MIN比较。代码如下:#include "stdio.h"#include "stdlib.h"#define LEN(arr) sizeof(arr)/sizeof((arr)[0])struct Result{ int Max; int SecondMax;};void GetSecondMax(int* arr, int len, Result* rlt){ for(int i=0; i< len-1; i=i+2) { if(NULL==arr[i+1]) . 阅读全文
posted @ 2011-09-07 12:02 Lovell Liu 阅读(418) 评论(0) 推荐(0) 编辑
摘要: 解法一:扫描一次数组找出最大值;再扫描一次数组找出最小值。代码(略)比较次数2N-2解法二:将数组中相邻的两个数分在一组, 每次比较两个相邻的数,将较大值交换至这两个数的左边,较小值放于右边。对大者组扫描一次找出最大值,对小者组扫描一次找出最小值。代码(略)比较1.5N-2次,但需要改变数组结构解法三:每次比较相邻两个数,较大者与MAX比较,较小者与MIN比较,找出最大值和最小值。代码如下:void GetMaxAndMin(int* arr, int len, Result* rlt){ for(int i=2; i< len-1; i=i+2) { if(NULL... 阅读全文
posted @ 2011-09-07 11:45 Lovell Liu 阅读(3655) 评论(0) 推荐(0) 编辑

2011年9月6日

摘要: 假设已经有了前序遍历和中序遍历的结果,如何重建这棵树呢?给定函数定义如下:void Rebuild(char* pPreOrder, //前序遍历结果 char* pInOrder, //中序遍历结果 int nTreeLen, //树的长度 NODE** pRoot) //返回NODE**类型用递归的方法解法如下:#include <iostream>using namespace std;struct NODE{ NODE* pLeft; NODE* pRight; char chValue;};in... 阅读全文
posted @ 2011-09-06 20:56 Lovell Liu 阅读(1733) 评论(0) 推荐(0) 编辑

导航