![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
每天积累一点点
iteye_16942
这个作者很懒,什么都没留下…
展开
-
背包类型问题
题目:输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数,使其和等于m ,要求将其中所有的可能组合列出来.思路:在每一次递归中,考虑是与否将当前元素添加到数列中去,知道和达到某一值为止。代码实现:[code="C++"]view plaincopy to clipboardprint?#include #include usi...2011-05-24 16:15:23 · 80 阅读 · 0 评论 -
关于堆与栈,到底理解了多少
一直以来对堆与栈的理解是有点模糊。起初只是知道栈空间是连续的;因为这种特性,使栈的操作与使用比较简单,基本操作就是指针上下移动就行了。而堆的空间分布可以是不连续的,因为这个原因会带来操作上的一些繁琐,比如进行搜索时会出现不必要的步骤,但在另一方面来说提高了灵活性。但是对于程序来说,数据应该在什么情况下分配到栈空间,什么情况下分配到堆空间呢?应该可以这样理解:1.没有引用类型...2011-05-05 02:14:16 · 77 阅读 · 0 评论 -
如何快速找出两个队列中相同的元素,假设队列的长度非常大
之前面试腾讯时,遇到一道面试题。题目大概是假设有海量的QQ会员参加了活动A,也有海量的QQ会员参加了活动B,如何快速找出既参加了活动A,又参加了活动B的QQ会员?当时回答时答得乱七八糟的,哎...我暂时想到的方法是先将两个队列变为有序队列,然后分别从两个队列的头部开始迭代:如果两个队列的当前元素大小相等,则两个队列的遍历下标分别前移1;否则将指向较小元素的下标前移1,另...2011-04-27 20:41:25 · 2126 阅读 · 0 评论 -
关于三个囚犯分汤,是否有更多妙计
题目:一间囚房里关押着两个犯人。每天监狱都会为这间囚房提供一罐汤,让这两个犯人自己来分。起初,这两个人经常会发生争执,因为他们总是有人认为对方的汤比自己的多。后来他们找到了一个两全其美的办法:一个人分汤,让另一个人先选。于是争端就这么解决了。可是,现在这间囚房里又加进来一个新犯人,现在是三个人来分汤。必须寻找一个新的方法来维持他们之间的和平,该怎么办呢?当初接触到这道题的时候,思维...2011-04-22 00:00:01 · 1128 阅读 · 0 评论 -
关于求子数组的最大和
这道题实在是很经典的面试题。题目主要是要求尽可能的减少时间复杂度。个人也写了一下,方便以后回头温习。[code="java"]int getMaxVal(int a[],int n){ int max=a[0]; //用来记录已经计算过的子数组的最大和 int result=a[0]; //返回最终的子数组最大和 for(int i=1;i0...2011-04-21 17:11:08 · 75 阅读 · 0 评论 -
哈希表的查找和算法
数据结构的一道题目:设有一组关键字{12,11,35,25,22,58},采用哈希函数:H(key)=key%6,采用开放地址法的二次探测再哈希方法解决冲突,试在0~10的哈希地址空间中对该关键字序列构造哈希表。解法:依题,m=11,二次探测再哈希的下一地址计算公式为 d1=H(key), d2=(d1+i*i)%m,...2011-04-19 22:30:17 · 249 阅读 · 0 评论 -
查找链表的中间节点
使用两个指针,一个指针每次前移一步,一个指针前移两步。那么当第二个指针走到链表尾端时,第一个指针就是链表中的相对中间节点位置。代码实现:[code="c++"]templateT findMidElem(Node *head){ Node *ptr1,*ptr2; ptr1=head; //每次移动一步的指针 if(ptr1==NULL)return...2011-04-19 19:38:14 · 89 阅读 · 0 评论 -
单链表的创建和一些操作
个人创建的一个类,实现单链表的基本操作,算是对数据结构知识的一点温习...[code="c++"]#ifndef TEMPLIST_H#define TEMPLIST_H#include #includetemplate class Node{public: T mydata; Node* next; Node() ...2011-04-19 18:18:45 · 97 阅读 · 0 评论 -
查找链表的倒数第k个元素
设置两个指针,让其中一个指针比另一个指针先前移k步,然后两个指针同时往前移动。循环直到先行的指针值为NULL时,另一个指针所指的位置就是所要找的位置。[code="c++"]templatestruct ListNode //链表节点元素,结构体{ T data; ListNode* next;};templateListNod...2011-04-18 13:02:03 · 118 阅读 · 0 评论 -
如何在不使用第三个变量的前提下,交换两个变量的值
int a=10,b=20;第一种方法:a=a+b;b=a-b;a=a-b; (前提是支持 + - = 的操作)第二种方法:a^=b;b^=a;a^=b;(原理还是一样,不过用到了二进制中的异或操作)////////////////////////////第三种方法:(未经验证)a=a+b-(b=...2011-04-17 19:08:44 · 184 阅读 · 0 评论 -
C++ 消息序列化与反序列化
1. 消息序列化 将具有一定结构的数据转换成可以存取或者可以传输的形式,比如转换成字符流的形式(char *)。通过序列化后,消息可以在系统各逻辑模块或者网络中传输。 2.消息反序列化 顾名思义,反序列化与序列化的过程相反。例如,将网络中传过来的放在缓冲区的字节流数据(char *)解码成具有一定含义和结构的数据,然后便可以对接出来的数据进行处理。 3.实例 3.1) 序列化...2011-07-31 11:09:22 · 223 阅读 · 0 评论 -
安装双系统引发的问题
为了学习linux下编程,几个月前安装了双系统win7+ubuntu。结果有一天ubuntu突然登录不进去了...悲剧,一直弄不好。结果一气之下在win7里用第三方软件把ubuntu的文件系统所在磁盘给格式化。没想到,这个冲动的行为是要付出代价的:电脑重启后连win7也登陆不了...请高手来帮忙,他们也表示无能为力。因为他们发现我的电脑磁盘不是一般的凌乱,主引导区已经没有,...2011-05-15 01:34:43 · 185 阅读 · 0 评论