您正在查看 "算法与数据结构" 分类下的文章 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
|
| | |