随笔分类 -  编程之美

重建二叉树
摘要:#include #define TREELEN 6using namespace std;typedef struct Node{ char chValue; struct Node* pLeft; struct Node* pRight;}*PNode;void LastOrd... 阅读全文
posted @ 2012-11-24 16:40 吉大依恋 阅读(247) 评论(0) 推荐(0)
求二叉树中节点的最大距离
摘要:#includeusing namespace std;struct Node{ char data; int nMaxLeft; int nMaxRight; Node* left; Node* right;};int nMaxLen;int FindMaxLen(Node* pRoot) //... 阅读全文
posted @ 2012-11-24 15:41 吉大依恋 阅读(141) 评论(0) 推荐(0)
分层遍历二叉树
摘要:#include#includeusing namespace std;struct Node{ int data; //节点中的数据 Node* lChild; //左子指针 Node* rChild; //右子指针};void PrintNodeByLevel(Node* r... 阅读全文
posted @ 2012-11-16 21:25 吉大依恋 阅读(223) 评论(0) 推荐(0)
队列中取最大值操作问题
摘要:分析:这个问题和设计一个在O(1)时间内取最大值的堆栈看似比较相似,但实现难度要比最大值的堆栈困难一些,开始想模仿最大值堆栈的思想来设计取最大值的堆栈都失败了。实际上这个问题可以拆分成两个问题:1)设计一个在O(1)时间内取最大值的堆栈;2)如何使用堆栈来实现一个队列;如果这两个问题解决了,O(1)... 阅读全文
posted @ 2012-11-16 20:41 吉大依恋 阅读(834) 评论(0) 推荐(0)
从无头单链表中删除节点
摘要:#includeusing namespace std;struct Node{ int data; Node* next;};void deleteNode(Node* p){ p->data=p->next->data; //将p后的节点的数值赋给p的data域 p->next... 阅读全文
posted @ 2012-11-16 19:12 吉大依恋 阅读(248) 评论(0) 推荐(0)
计算字符串的相似度
摘要:#include#includeusing namespace std;/*计算A[1,...,lenA]和B[1,...,lenB]的相似度可以采用动态规划计算A[2,...,lenA]和B[1,...,lenB]的相似度,A[1,...,lenA]和B[2,...,lenB]的相似度,A[2,.... 阅读全文
posted @ 2012-11-16 18:49 吉大依恋 阅读(266) 评论(0) 推荐(0)
电话号码对应英文单词
摘要:#include#define TelLength 3using namespace std; //将各个数字多能代表的字符存储在一个二维数组中char c[10][10]={ "", //0 "", //1 "ABC"... 阅读全文
posted @ 2012-11-16 16:27 吉大依恋 阅读(2902) 评论(0) 推荐(0)
字符串移位包含的问题
摘要:#includeusing namespace std;//method1/*最直接的方法就是对src进行循环移位,再进行字符串包含的判断,从而遍历其所有的可能性。时间复杂度为O(N^2)*/bool isContain(char* src,char* des){ int len=strle... 阅读全文
posted @ 2012-11-07 14:38 吉大依恋 阅读(232) 评论(0) 推荐(0)
程序理解和时间分析
摘要:#include #include using namespace std; int main() { int rg[] = {2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19, 20,21,22,23,24,25,26,27,2... 阅读全文
posted @ 2012-11-07 13:57 吉大依恋 阅读(321) 评论(0) 推荐(0)
数组循环移位
摘要:#include#includeusing namespace std;//method1/*简单的办法,可以每次将数组中的元素右移一位,循环k次。不妨设k是一个非负的整数,当k为负整数的时候,右移k位,相当于左移(-k)位。左移和右移本质上是一样的。大家开始可能会有这样潜在的假设,k0;j--) ... 阅读全文
posted @ 2012-11-07 13:20 吉大依恋 阅读(254) 评论(0) 推荐(0)
求数组中最长递增子序列
摘要:#includeusing namespace std;//method1/*利用动态规划来求解。假设目标数组array[]的前i个元素中,最长递增子序列的长度为LIS[i].那么,LIS[i]=max{1,LIS[k]+1},array[i+1]>array[k],for any kA[j] &&... 阅读全文
posted @ 2012-11-07 12:35 吉大依恋 阅读(220) 评论(0) 推荐(0)
数组的子数组之和的最大值(二维)
摘要:#include#define MAX 100using namespace std;int A[MAX][MAX];int PS[MAX][MAX];//method1/*最直接的方法,当然是枚举每一个矩形区域,然后再求这个矩形区域中元素的和。时间复杂度为O(N^2 * M^2 * Sum的时间复... 阅读全文
posted @ 2012-11-07 09:04 吉大依恋 阅读(414) 评论(0) 推荐(0)
数组的子数组之和的最大值
摘要:#includeusing namespace std;//method1 /* 使用穷举的方法穷举出所有可能的子数组之和,然后从中找出最大值。由于使用三重循环故时间复杂度为O(N^3)*/int MaxSum(int* A,int n){ int maximum=A[0];//maximum初始化... 阅读全文
posted @ 2012-11-06 20:12 吉大依恋 阅读(200) 评论(0) 推荐(0)
二进制中1的个数
摘要:算法-求二进制数中1的个数问题描述任意给定一个32位无符号整数n,求n的二进制表示中1的个数,比如n=5(0101)时,返回2,n=15(1111)时,返回4这也是一道比较经典的题目了,相信不少人面试的时候可能遇到过这道题吧,下面介绍了几种方法来实现这道题,相信很多人可能见过下面的算法,但我相信很少... 阅读全文
posted @ 2012-10-08 10:50 吉大依恋 阅读(267) 评论(0) 推荐(0)