文章列表
 
您正在查看 "算法与数据结构" 分类下的文章

2008-07-31 8:41

问题描述: 给定一个正整数x,正整数a,b,c形成勾股数,a,b是直角边,c是斜边,请问保证c小于等于x的情况下一共有多少种勾股数组合?

(1)最简单的穷举法,可以设置3重循环来穷举a,b,c,时间复杂度为o(n^3)。

简单代码如下:

/*
描述: 张凯的勾股数问题
作者: xiaocui
时间: 2008.7.29
版本: v1.0
*/

#include <iostream>
using namespace std;

int main()
{
int a, b, c;
int x = 1003; //x取值,可以根据需求改变
int totalCount = 0

 
2008-04-13 9:02

#include <iostream>
#include <vector>
#include <list>
using namespace std;
const char *TENSTR="3456789123456789";//可以改变
const char *TENSTR2="98123456123456";//可以改变
list<char> longintcheng(vector<char> &,vector<char> &);
list<char> addlist(list<char>,list<char>);
void main()
{
vector<char> tenstr(TENSTR,TENSTR+16);//需要改变
vector<char> tens

 
2008-02-27 17:29

这几天在研究中文分词,目前已经研究试验了基于词典的常用中文分词算法,包括正向最大匹配、逆向最大匹配、整词二分法、基于tire的中文分词、逐词二分法、双字多字hash的方法,稍后的文章会提及中文分词的方法和程序。此篇文章是基于tire的中文分词中检索树的实现,希望对tire感兴趣或者想研究中文分词的朋友有所帮助,仅做交流。

firstChHash.h头文件内容:

/*
描述: 首字hash函数的实现和说明
作者: xiaocui
时间: 2008.2.27
版本: v1.0
*/

/* 首字hash方法: 在整词二分法,基于Trie

 
2008-02-15 17:09

/*
描述: 一个正整数序列,奇数和偶数随机存放,现在需要把所有奇数放在所有偶数前面,需要o(n)时间复杂度和尽量少的额外空间
作者: xiaocui
时间: 2008.2.15
版本: v1.0
*/

/* 思路描述: 有2种方法,一种方法是首先扫描一边序列,把奇数和偶数的个数得到,如果偶数的个数比奇数少,记录各个偶数的位置,然后
把偶数摆放到适当位置;如果奇数个数少,则记录各个奇数的位置,然后把奇数摆放到适当位置。时间复杂性是o(n),空间复杂性为o(n/2)。

   另一种方法是快速排序的partit

 
2008-01-09 10:00

本程序目前针对完全连通图,首先交互式建立图,利用邻接矩阵存储,然后分别实现并测试了图的深度优先遍历和广度优先遍历。

/*
描述: 交互式建立图(以邻接矩阵存储),做图的深度、宽度优先遍历
作者: xiaocui
时间: 2008.1.7
版本: v1.0
*/

/*说明: 本程序首先交互式建立图,并用邻接矩阵存储图。在
邻接矩阵的基础上,对图进行深度优先遍历。深度优先遍历
背后基于堆栈,有2种形式: 第一种是程序中显示构造堆栈,
利用压栈出栈操作实现;第二种是利用递归函数调用,基于

 
2008-01-07 21:15

/*
描述: 交互式建立图(以邻接矩阵存储)
作者: xiaocui
时间: 2008.1.7
版本: v1.0
*/

#include <iostream>
#include <vector>
#include <map>
using namespace std;

class edge
{
public:
edge(char beginV, char endV)
{
   this->beginV = beginV;
   this->endV = endV;
}

bool operator < (const edge& rhs) const
{
   return ( (this->beginV

 
2008-01-07 17:19

/*
描述: 中枢元素位置随机生成的快速排序算法
作者: xiaocui
时间: 2008.1.6
版本: v1.0
*/

#include <iostream>
#include <ctime>
using namespace std;

/* 交换元素 */
template<typename T>
void mySwap(T& x, T& y)
{
T tmp = x;
x = y;
y = tmp;
}

/* 中枢元素位置为第一个元素的快速排序算法 */
template<typename T>
void quickSort(T array[], int startIndex, int endIndex)
{

 
2008-01-07 17:09

/*
描述: 中枢元素位置随机生成的快速排序算法
作者: xiaocui
时间: 2008.1.6
版本: v1.0
*/

#include <iostream>
#include <ctime>
using namespace std;

/* 交换元素 */
template<typename T>
void mySwap(T& x, T& y)
{
T tmp = x;
x = y;
y = tmp;
}

/* 中枢元素位置为第一个元素的快速排序算法 */
template<typename T>
void quickSort(T array[], int startIndex, int endIndex)
{

 
2008-01-06 13:22

       以前对快速排序程序也写过几遍,但都是传统的中枢元素处于开头位置的那种。有幸参加了一个公司的面试,和面试官交流了一下快速排序,包括传统的中枢元素位于开头位置和中枢元素随机生成的,对我的启发挺大的。当时把传统的程序调整了一下,改成了中枢元素位置随机生成的程序,得到了面试官的些许认可。今天回来在机子上调了一下,发现当时临场写程序还有一个小bug,已经在程序中修正过来了,也感谢面试官对我写程序的建议和鼓励。

/*
描述: 中枢元素位置随机生成的快速排序

 
2007-12-25 22:55

/*
描述: 实现大整数相除,得到商和余数
作者: xiaocui
时间: 2007.12.25
版本: v1.0
*/

/* 以前实现过大数相加,相减和相乘,大数相除印象中好像
   实现过,如果没有今天就把它写出来。此程序模拟人的手工
   除法,再已知被除数和除数的情况下求出所得得商和余数
   */

#include <iostream>
#include <string>
using namespace std;


/* 比较2个大整数的大小,返回true表示前者大于等于后者*/
bool

 
   
 
 
文章存档
 
     
 
最新文章评论
  

[表情]
 

折半插入排序应该不是稳定的算法吧
 

那个群面纯属扯淡,短短半个小时能面出综合素质?
 

貌似不对吧,用你的n==4的时候是13,实际上应该是14. f(n)=f(n-1)+f(n-1)+f(n-2)+...
 

回复cuifenghui:那你认为英文句子中的123.125、1,000,000这种数字,或是Tom's Tom'
   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu