编程之美---读书笔记
xiaozhuaixifu
这个作者很懒,什么都没留下…
展开
-
编程之美---中国象棋将帅问题
题目链接:http://www.msra.cn/Articles/ArticleItem.aspx?Guid=4c86d636-04bb-4ad9-b0bc-4c3496d18021#.给出c++实现的简单代码:#include #include using namespace std;const unsigned char fullmark=255; //11111111 con原创 2013-07-06 21:40:12 · 1347 阅读 · 0 评论 -
编程之美----高效率地安排见面会----贪心策略
每一个面试是一个整数的闭区间【Bi,Ei】表示开始时间和结束时间,有N个面试要进行,求最少的面试点。思路:按开始时间排序,使用贪心策略,每一个面试使用一个最小的正整数k来表示可行的颜色,当然如果重叠了就必须使用一个新的颜色。c++实现:#include #include #include using namespace std;struct meeting{ int b,e;原创 2013-07-07 20:37:48 · 1457 阅读 · 0 评论 -
编程之美---子数组之和的最大值(二维)
避免使用暴力枚举的方法,我们参考一维数组的求法,一维的解答可以再线性时间 内完成,具体可以参考我的编程珠玑读书笔记。我们把问题从二维转坏为一维,现在我们枚举矩阵的上下边界,然后用一维的方法确定左右边界,时间复杂度为O(N^2*M)。#include #include using namespace std;const int maxn=505;int matrix[maxn][ma原创 2013-07-14 22:23:47 · 904 阅读 · 0 评论 -
编程之美---快速寻找满足条件的两个数---扩展问题
现在有N个取值在1~5000的整数序列,现在我任意给出一个数X,求出在N个数列中和为X的所有组合。比如:N=10个数列:1 2 3 3 9 5 100 50 30 15X=10满足条件的组合:A、2 3 5 B、1 9这是一个典型的 Sub-set-Sum问题,NP-C问题,这里没有高效的解法,暂时只想到了暴力DFS。如果不输出解的话可以考虑动态规划。#inclu原创 2013-07-14 20:11:58 · 1530 阅读 · 0 评论 -
编程之美读书笔记---计算字符串的相似度
使用递归实现,但是计算了重复的子问题,所以采用记忆化方法,将子问题的解保存在一个数组里。#include #include #include #include using namespace std;int ans[100][100][100][100];int mmin(int a,int b,int c){ a=a<b?a:b; a=a<c?a:c; return a;原创 2013-07-17 21:13:29 · 907 阅读 · 0 评论 -
编程之美读书笔记---单链表反序---要求只遍历一次
扩展问题:编写一个函数,给定一个链表的头指针,要求只遍历一次,将单链表中的元素顺序反序。#include #include #include #include using namespace std;struct node{ int data; node *next;};void reverselist(node* &head){ node *p,*q; p=hea原创 2013-07-18 14:03:54 · 1208 阅读 · 0 评论 -
编程之美读书笔记---分层遍历二叉树
层序遍历一颗二叉树。给定一颗二叉树如下:输出结果:12 34 5 67 8给出书上的两种实现:#include #include #include using namespace std;struct node{ int data; node* left; node* right;};void creattree(node* &root){ r原创 2013-07-20 13:28:57 · 1011 阅读 · 0 评论 -
重建二叉树---根据前序和中序遍历结果重建二叉树
一颗二叉树:前序遍历结果: abdcef中序遍历结果:dbaecf基于递归的思想:在前序遍历中的第一个结点是根结点,然后在中序遍历中找到此根节点,然后递归的对左右子树分别重建。顺说一下,知道前序和后序遍历结果,我无法重建二叉树的,因为当某个结点只有一个儿子结点的时候,无法区分出到底是左还是右结点。#include #include using namespace std;原创 2013-09-01 09:50:24 · 1087 阅读 · 0 评论