- 浏览: 45394 次
- 性别:
- 来自: 广州
最新评论
-
raojl:
用google prototype!
C++ 消息序列化与反序列化 -
candle_huihui:
表示遇到过相同及更痛苦的情况过,曾被grub弄得很惨, ...
安装双系统引发的问题 -
moxiaomomo:
基德KID.1412 写道查找字符串中的子串,子串可以不连续对 ...
懂得实现字符串的操作(strcpy函数等)(一) -
基德KID.1412:
查找字符串中的子串,子串可以不连续对吧?
懂得实现字符串的操作(strcpy函数等)(一) -
moxiaomomo:
用hash表找吧,把第一个活动的会员用QQ号生成hashcod ...
如何快速找出两个队列中相同的元素,假设队列的长度非常大
文章列表
1. 消息序列化 将具有一定结构的数据转换成可以存取或者可以传输的形式,比如转换成字符流的形式(char *)。通过序列化后,消息可以在系统各逻辑模块或者网络中传输。 2.消息反序列化 顾名思义,反序列化与序列化的过程相反。例如,将网络中传过来的放在缓冲区的字节流数据(char *)解码成具有一定含义和结构的数据,然后便可以对接出来的数据进行处理。 3.实例 3.1) 序列化
struct User
{
unsigned int id_; 序列化为char * | 4 个 byte ...
(1)const定义常量:
const dataType constData=value;//const修饰的类型为dataType的变量value不可变.
(2)指针中使用const,主要有三种方式
a.指针本身是常量,它本身不可变
char* const ptr;
b.指针所指向的内容是常量,指向的内容不可变
const char* ptr;
c.两者都不可变
const char* const ptr;
(3)函数中使用const
a.传指针参数前添加const
...
因为是第一次写T树,网上的参考源码稀缺,所以程序中不免有bug,正在修正中。
我的同步博客:http://blog.csdn.net/moxiaomomo/archive/2011/06/09/6535008.aspx
view plaincopy to clipboardprint?
#pragma once
//
// by xiaomo
// 2011.06
// Ttree.h
#include<iostream>
using namespace std;
enum ENUM
{
MaxSize=6 ...
比如有一个关于问答游戏的程序,程序只有在输入当前问题的答案才会继续提问下一个问题,而输入答案是由玩家来操纵的,程序要时刻监测输入情况。
这种问题在控制台很容易解决,在Qt GUI应用程序则要用到线程来解决,
如下:
#include <windows.h>
//......代码省略
while(!isSend)//isSend是输入答案的确认变量
{
QCoreApplication::processEvents(); //支持界面刷新
Sleep(300);//当前线程睡眠一段时间(0.3s),避免一直占用CPU
}//如果确认输入答案, ...
题目:
输入两个整数n 和m,从数列1,2,3.......n 中随意取几个数,
使其和等于m ,要求将其中所有的可能组合列出来.
思路:在每一次递归中,考虑是与否将当前元素添加到数列中去,知道和达到某一值为止。
代码实现:
view plaincopy to clipboardprint?
#include<iostream>
#include<deque>
using namespace std;
void findNums(int n,int leftSum,deque<int>& deq)
{ ...
JAVA中synchronized关键字能够作为函数的修饰符,也可作为函数内的语句,也就是平时说的同步方法和同步语句块。假如再细的分类,synchronized可作用于instance变量、object reference(对象引用)、static函数和class literals(类名称字面常量)身上。
在进一步阐述之前,我们需要明确几点:
A.无论synchronized关键字加在方法上还是对象上,他取得的锁都是对象,而不是把一段代码或函数当作锁――而且同步方法很可能还会被其他线程的对象访问。
B.每个对象只有一个锁(lock)和之相关联。
C.实现同步是要很大的系统开销作为代价的, ...
一般面试的时候,如果要考查你的C++基本功,关于字符串的实现的内容出现的频率比较高。
下面是个人实现的三个简单的字符串相关函数,以后会陆续补充。
//(1)查找字符串中的子串
int mystrstr(const char* string,const char* substring)
{
if(string==NULL||substring==NULL)return -1;
int s1=strlen(string);
int s2=strlen(substring);
if(s1<s2)return-1;
const char* temp=sub ...
interface与abstract的区别
1.相同点:
A. 两者都是抽象类,都不能实例化。
B. interface实现类及abstrct class的子类都必须要实现已经声明的抽象方法。
2. 不同点:
A. interface需要实现,要用implements,而abstract class需要继承,要用extends。 ...
为了学习linux下编程,几个月前安装了双系统win7+ubuntu。
结果有一天ubuntu突然登录不进去了...悲剧,一直弄不好。
结果一气之下在win7里用第三方软件把ubuntu的文件系统所在磁盘给格式化。
没想到,这个冲动的行为是要付出代价的:电脑重启后连win7也登陆不了...
请高手来帮忙,他们也表示无能为力。因为他们发现我的电脑磁盘不是一般的凌乱,主引导区已经没有,用网上的那些解决方法已经不管用了。
沮丧之余便想将所有磁盘分区格式化,重新分区。这是多么大的打击,多么严重的创伤啊!
可有什么办法呢?
我用系统光盘启动winPE后,想把一些重要文件拷贝出来后,对磁盘进行血洗。 ...
面试的时候被问及了String类的实现,结果没写好...
就当是重新复习一下吧。
下面的程序并没有把String类的所有成员方法实现,只写了大部分重要的成员函数。
#include<iostream>
#include<iomanip>
using namespace std;
class String{
friend ostream& operator<< (ostream&,String&);//重载<<运算符
friend istream& operator>> ...
刚学了flash和as3,写了个仿雷电的小游戏,算是半成品吧。
虽然简单了点,个人感觉还过得去。[img]/images/smiles/icon_razz.gif" alt="[/img]
正在想怎么去实现跟踪弹。等到完善之后再发个源码上来,让大家指点一下。
一直以来对堆与栈的理解是有点模糊。
起初只是知道栈空间是连续的;因为这种特性,使栈的操作与使用比较简单,基本操作就是指针上下移动就行了。而堆的空间分布可以是不连续的,因为这个原因会带来操作上的一些繁琐,比如进行搜索时会出现不必要的步骤,但在另一方面来说提高了灵活性。
但是对于程序来说,数据应该在什么情况下分配到栈空间,什么情况下分配到堆空间呢?
应该可以这样理解:
1.没有引用类型的值类型会在栈空间里分配,比如struct,局部变量的int等。
2.至于包含了引用类型的:引用类型可以分成两部分,一部分是它的"引用",分配在栈空间里;一部分是实际内容,分配在堆空间里。
...
之前面试腾讯时,遇到一道面试题。
题目大概是假设有海量的QQ会员参加了活动A,也有海量的QQ会员参加了活动B,如何快速找出既参加了活动A,又参加了活动B的QQ会员?
当时回答时答得乱七八糟的,哎...
我暂时想到的方法是先将两个队列变为有序队列,然后分别从两个队列的头部开始迭代:
如果两个队列的当前元素大小相等,则两个队列的遍历下标分别前移1;否则将指向较小元素的下标前移1,另一个下标不变。
这样遍历一直到其中一个队列已经完全遍历为止。这时便能找出所有相同的元素。
算法一直是自己短板。暂时想不出更好的办法,要是不用排序就好了。
关于三个囚犯分汤,是否有更多妙计
- 博客分类:
- 每天积累一点点
题目:
一间囚房里关押着两个犯人。每天监狱都会为这间囚房提供一罐汤,让这两个犯人自己来分。起初,这两个人经常会发生争执,因为他们总是有人认为对方的汤比自己的多。后来他们找到了一个两全其美的办法:一个人分汤,让另一个人先选。于是争端就这么解决了。
可是,现在这间囚房里又加进来一个新犯人,现在是三个人来分汤。必须寻找一个新的方法来维持他们之间的和平,该怎么办呢?
当初接触到这道题的时候,思维开始有点乱。但是后来慢慢想清楚了。
其实这种问题可以扩展到大规模的问题,加入有四个囚犯呢?五个呢?
如果是这样的话,就可以想到一种很经典的解法,那就是相似递归。
我们可以想到,最后分汤的情景只剩下两个人,那样 ...
这道题实在是很经典的面试题。
题目主要是要求尽可能的减少时间复杂度。
个人也写了一下,方便以后回头温习。
int getMaxVal(int a[],int n)
{
int max=a[0]; //用来记录已经计算过的子数组的最大和
int result=a[0]; //返回最终的子数组最大和
for(int i=1;i<n;++i)
{
if(max>0)
{
max+=a[i];
}
else max=a[i];
if(max>result)
{result=max ...