05 2012 档案

摘要:问题描述:假如给你一个固定的集合{"abc"},如果要求这个集合的所有子集合,怎么办?数学功底好的人也许一下子知道答案了---总数是2^n,对答案就是这个(如果包括空集的话)。数学定义是这样的:定义1:含有n个元素的集合A称为n元集。它的含有m个(m≤n)元素的子集称作它的m元子集一般来说,对于n元集A,它的m(0≤m≤n)元子集有个,所以不同的子集总数有=2n 所以n元集共有2n个子集。 至于推理过程就不在详细介绍了,有兴趣的同学可以自己思考一下。既然我们知道了结果,但是这不是根本目的,我还想要将求解的过程模拟出来,怎么办?只有靠程序实现这个模拟过程了。对于这个过程有这样 阅读全文
posted @ 2012-05-22 19:17 f_x_p 阅读(1002) 评论(0) 推荐(0)
摘要:这个问题似乎很经典,在很多的地方都看得到,对于大部分人来说这个问题很easy,但我想把自己的设计过程简单说明一下,以记一下这个设计的流程。思路很简单,栈的操作跟出栈操作和队列不同,通俗的讲正好相反,所以反反为正的原则告诉我们,用两个栈就能模拟一个队列了。假如有两个栈stack1,和stack2。stack1用来负责存放入栈的序列,而stack2负责整个队列的出栈操作。当有入栈需求时,我们直接把数据存放入stack1就行了,而当有出栈需求时,我们就需要判断了,因为可能会遇到栈空的现象。当系统希望出栈时,我们首先判断stack2是否为空,如果stack2不空,说明里面有元素供我们使用,直接拿来就行 阅读全文
posted @ 2012-05-21 11:11 f_x_p 阅读(517) 评论(0) 推荐(0)
摘要:今天在做数据结构课后练习题的时候,发现有一道题挺有意思的,问题是这样的:给定两个序列,给出算法用来判断第二个序列是否为以第一个序列为入栈顺序的出栈序列。比如给出了入栈的序列 EASY,那么给出一个算法判断ASYE是否为它的一个出栈序列。在还没有做出这个题目之前我想到了另外的一个问题:如果给出一个入栈的序列,那么怎么求出所有可能的出栈序列呢?那么我们先来解决第二个问题。假如你组合数学学的还行的话,这个时候你可能会想到在组合数学中的一个有名的数--卡塔兰数。(http://zh.wikipedia.org/wiki/卡塔兰数)上面就是它的常见公式,很多问题都可以通过计算这个公式直接得到你想要的.. 阅读全文
posted @ 2012-05-19 11:34 f_x_p 阅读(13238) 评论(3) 推荐(1)
摘要:#include <stdlib.h>#include <stdio.h>#include <string.h>typedef enum rtValue{pNULL,txtInvalid,OverFlow,Valid}rtValue;rtValue m_error = Valid;int atoi_fxp(const char* nptr){ int i,len,negtive; long long result; if(nptr == NULL){ m_error = pNULL; return -1; } i = result = ... 阅读全文
posted @ 2012-05-11 17:31 f_x_p 阅读(192) 评论(0) 推荐(0)
摘要:enum rtValue{ptNULL,txtInvalid,Valid}m_error; //m_error变量用来区分返回错误的原因char* mTolower(const char* strSource){ char* strDest; int len,i; m_error = Valid; if(strSource == NULL){ m_error = ptNULL; return NULL; } len = strlen(strSource); strDest = (char*)malloc(len+1); memset(strDest,0,len+1); i = 0; whi.. 阅读全文
posted @ 2012-05-11 16:00 f_x_p 阅读(790) 评论(0) 推荐(1)