算法设计
专注成就专业_
专注成就专业!!!
展开
-
完全模式和部分匹配的解决。。。
对于模式匹配。无非就是查找技术的应用。。。 对比的过程,其实也就是 #include #include #include using namespace std; int main() { int i= 0, j = 0, k = 0; bool bRet = false; char szTemp[10] = "hello", sz原创 2009-11-12 11:02:00 · 336 阅读 · 0 评论 -
线性表的链式存储结构与操作
#include using namespace std;struct Infor{ int nLocal; char szWord; Infor *next;};class Test_2{public: Test_2(); ~Test_2(); void InterFace(); void BuildList(); void SearchOne(); void DeleteOne(原创 2009-11-16 17:50:00 · 609 阅读 · 0 评论 -
栈的链式存储结构与操作
#include using namespace std;struct Infor{ char temp; struct Infor *next;};templateclass Test{public: Test(); ~Test(); void InterFace(); void Exit(); void GetIntoStack(); void GetOutStack();原创 2009-11-16 17:51:00 · 391 阅读 · 0 评论 -
判断某日是该年第几天
#include using namespace std;struct Infor{ int nYear; int nMonth; int nDay; int nNum; struct Infor *next;};int main(){ // 1 2 3 4 5 6 7 8 9 10 11 12 const int nArray原创 2009-11-16 18:00:00 · 478 阅读 · 0 评论 -
乘法口诀
#include using namespace std;int main(){ int i, j, k, nArray[10] = {0}, l = 0; cin >> k; while (0 != k) { nArray[l++] = k; cin >> k; } k = 0; while ( k { cout for (i = 1; i { fo原创 2009-11-16 18:01:00 · 417 阅读 · 0 评论 -
关于ACM错误提示的说明
下面是一般JudgeOnline系统所有可能产生的结果,如果对返回的结果不明,看看解释吧Waiting: Your program is being judged or waiting to be judged. Accepted (AC): Congratulations! Your program has produced the correct output! Pr转载 2009-11-17 18:21:00 · 1139 阅读 · 0 评论 -
利用 格雷码(Gray code) 求集合的子集
<br />接着昨天的话题,求集合中的子集。<br /> <br />今天,我们可以找到另一种方法来求所有集合的子集。。。<br /> <br />先来段背景介绍:<br /><br />格雷码(Gray code),又叫循环二进制码或反射二进制码 在数字系统中只能识别0和1,各种数据要转换为二进制代码才能进行处理,格雷码是一种无权码,采用绝对编码方式,典型格雷码是一种具有反射特性和循环特性的单步自补码,它的循环、单步特性消除了随机取数时出现重大误差的可能,它的反射、自补特性使得求反非常方便。格雷码属于可靠原创 2011-01-22 14:27:00 · 1131 阅读 · 0 评论 -
位运算求子集数
一道求子集的题:具体就是算一个给出的集合中的所有的子集,有人用递归实现,不过我还是喜欢用位运算来做。原理是这样的,工具给出的集合的大小X,我们可以得到子集的大小:(1序号与数组中的每一位做运算,然后将结果写回数组。这里,数组的每一位1或者0(1代表输出),数组的大小由子集大小的二进制的位数决定,具体开代码:#include #include //// 求子集//#define MAX_SIZE 4int gArray[MAX_SIZE] = {0};int gAr原创 2011-01-21 15:48:00 · 1620 阅读 · 0 评论 -
用字典顺序得到所有的排列
RT :为了得到字典顺序的所有排列,我查了一些资料,发现有些说法好像有些问题,现在总结一下;【字典序法生成全排列】字典序列算法是一种非递归算法。而它正是STL中Next_permutation的实现算法。我们来看看他的思路吧:它的整体思想是让排列成为可递推的数列,也就是说从前一状态的排列,可以推出一种新的状态,直到最终状态。比如说,最初状态是12345,最终状态是54321。其实我觉得这跟我们手动做全排列是一样的。首先是12345,然后12354,然后12435,12453....逐渐地从后往前递增。看看算原创 2011-01-25 17:42:00 · 2286 阅读 · 4 评论 -
回顾一下“快速排序”
<br />为了巩固以前学过的知识,复习一下排序算法,加深对其的了解,总结一下:<br /> <br /> <br />快速排序是对冒泡排序的一种改进。它的基本思想是:通过一躺排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后再按次方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。<br /> 假设要排序的数组是A[1]……A[N],首先任意选取一个数据(通常选用第一个数据)作为关键数据,然后将所有比它小的数都放到原创 2011-02-05 16:21:00 · 503 阅读 · 0 评论 -
编译技术的作业笔记
<br />昨天考完日语之后,就知道了要悲剧(其实没考我就知道要悲剧),无奈之,今天继续做起了课设,希望能够尽早的完成它。<br />因为期末很多报告,昨晚做了一下编译技术的作业,题目 1:C 标识符的识别 2:词法分析程序。。。<br /> <br />他们都说1做好了,于是乎原创 2010-12-24 17:38:00 · 795 阅读 · 0 评论 -
课程设计:哈弗曼源码
//头文件#include #include #include #include using namespace std;#define MAX_SIZE 128struct HuffumanNode //节点信息{ string weight; int Frequence; char原创 2009-12-31 22:08:00 · 590 阅读 · 0 评论 -
线性表的顺序存储结构与操作
#include#define MaxSixe 20using namespace std;struct Infor{ char szWord; Infor *next;};class Test_1{public: Test_1(); ~Test_1(); void InterFace(); void InsertNum(); void CreateList(); void Show原创 2009-11-16 17:46:00 · 459 阅读 · 0 评论 -
二叉树的非递归访问
#include #include using namespace std;struct Infor{ char word; int nFlags; struct Infor *lchild, *rchild, *next;};class Test{public: Test(); void CreatTree(); void PreOrder(); void PrePassT原创 2009-11-16 18:01:00 · 487 阅读 · 0 评论 -
舞伴问题
#include #include using namespace std;struct Infor{ char szSex; string strName; struct Infor *next;};class Test{public: Test(); void InterFace(); void CreatQuene(); void ShowResult();privat原创 2009-11-16 18:00:00 · 716 阅读 · 1 评论 -
简单的括号匹配问题,只有 ( 和 )。。。其实原理就是开栈最后的状态。。。
#include using namespace std;templateclass Test{public: Test(); void GetIntoStack(T temp, int nSize); private: int m_nLeft;};templateTest::Test(){ m_nLeft = 0;}templatevoid Test::GetIntoStac原创 2009-11-16 17:48:00 · 364 阅读 · 0 评论 -
栈的顺序存储结构与操作
#include using namespace std;struct Infor{ char word;};templateclass Test{public: Test(); ~Test(); void InterFace(); void GetIntoStack(); //入站 void OutputStack(); //出站不删除 void ShowStack();原创 2009-11-16 17:51:00 · 407 阅读 · 0 评论 -
队列的顺序存储结构与操作
#include using namespace std;templateclass Test{public: Test(); void InterFace(); void GetIntoQue(); void CleanQuene(); void GetQueueHead(); void DeleteQueueHead(); void Exit();private: T m_t[100原创 2009-11-16 17:52:00 · 518 阅读 · 0 评论 -
队列的链式存储结构与操作
#include using namespace std;struct Infor{ char temp; struct Infor *next;};templateclass Test{public: Test(); void InterFace(); void GetIntoQueue(); void GetTopStack(); void Exit(); void Delete原创 2009-11-16 17:52:00 · 561 阅读 · 0 评论 -
集合的运算
#include using namespace std;class Test{public: Test(); void InterFace(); void ShowDef(); void ShowSame(); void GetArrayA(); void GetArrayB();protected:private: int m_nArray_1[20], m_nArray_2[20原创 2009-11-16 17:53:00 · 420 阅读 · 0 评论 -
二叉树的建立和访问的方法
#include #include #include using namespace std;struct Infor{ int nNum; struct Infor *lChild, *rChild, *next;};class Test{public: Test(); void creatTree(); void PreTree(); void MidTree(); void Las原创 2009-11-16 17:54:00 · 391 阅读 · 0 评论 -
计算二叉树的结点个数
#include using namespace std;extern int gNum = 0;struct Infor{ char word; struct Infor *lchild, *rchild;};class Test{public: Test(); void CreatTree(); void PreTree();private: struct Infor *原创 2009-11-16 17:55:00 · 1603 阅读 · 0 评论 -
打印方阵
#include using namespace std;int main(){ int i, j, k; cin >> i; for (j = 0; j { for (k = 0; k { if (0 == j || j == i - 1 || 0 == k || k == i - 1) { cout } else if (j == i/2 && k =原创 2009-11-16 17:56:00 · 403 阅读 · 0 评论 -
AC WA or PE
#include #include using namespace std;struct Infor{ string str; int nFre;};int main(){ int i, j, k = 0; string strWord; struct Infor array[100]; cin >> i; while (0 != i) { int nSum = 0原创 2009-11-16 17:56:00 · 767 阅读 · 0 评论 -
一元多项式的运算
#include using namespace std;struct Infor{ int coef; int exp; struct Infor *next;};int main(){ int i = 0, j, k; char word; struct Infor *p1 = new struct Infor; struct Infor *p2 = p1; struct In原创 2009-11-16 17:58:00 · 635 阅读 · 0 评论 -
判断闰年的另类条件
#includeusing namespace std;int main(){// freopen("1.txt", "r", stdin); long int i; cin >> i; while (0 != i) { bool bRet = false; if ((0 == i % 172800) && (0 == i % 86400)) { bRet = true;原创 2009-11-16 17:58:00 · 518 阅读 · 0 评论 -
代码优化之循环展开
数组的循环与分割, 利用了计算机系统的两个特点: 1. 有多块高速缓存; 2. Cpu是可以多指令并行执行(要求多条指令之间 没有数据相关性)。 在我们的例子中: 数组切分: 将1个数组切分为2个数组。 这样就能用2块高速缓存来存数据, 高速缓存的访问速度是内存的 10倍以上 循环展开: 我们将的步进设置为4,每次处理的数据之间 没有任何关系,这样原创 2013-04-22 20:18:24 · 1324 阅读 · 0 评论