摘要: 如何利用数学思想解1/2/5组合问题http://blog.csdn.net/sailor_8318/archive/2008/10/22/3120812.aspx华为笔试题:写一个程序,要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。如:100个1是一个组合,5个1加19个5是一个组合。。。。答案:最容易想到的算法是:设x是1的个数,y是2的个数,z是5的个数,number是组合数x+2*y+5*z = 100求这个方程解的个数number注意到0<=x<=100,0<=y<=50,0<=z=20,所以可以编程为:number=0;for 阅读全文
posted @ 2011-12-13 08:50 早起两小时 阅读(235) 评论(0) 推荐(0) 编辑
摘要: 约瑟夫环来源http://hi.baidu.com/yangyuhang/blog/item/cd841b7b654f9ff20ad18704.html已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。链表方法 这个就是约瑟夫环问题的实际场景,有一种是要通过输入n,m,k三个正整数,来求出列的序列。这个问题采用的是典型的循环链表的数据结构,就是将一个链表的尾元素指针指向队首元素。 p->link=head 解决问题的核心步骤: 1.建立 阅读全文
posted @ 2011-12-05 11:27 早起两小时 阅读(530) 评论(0) 推荐(0) 编辑
摘要: 来源:BloodAndBoneList封装了链表,Vector封装了数组, list和vector的最主要区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多了,不需要拷贝和移动数据,只需要改变指针的指向就可以了。另外对于新添加的元素,Vector有一套算法,而List可以任意加入。Map,Set属于标准关联容器,使用了非常高效的平衡检索二叉树:红黑树,他的插入删除效 阅读全文
posted @ 2011-11-22 19:51 早起两小时 阅读(314) 评论(0) 推荐(0) 编辑
摘要: 引用自http://js2854.tk/tb.php?sc=46723c&id=82作者:中国电波传播研究所 郎锐■来自:yesky摘要:多线程同步技术是计算机软件开发的重要技术,本文对多线程的各种同步技术的原理和实现进行了初步探讨。关键词:VC++6.0; 线程同步;临界区;事件;互斥;信号量;正文 使线程同步 在程序中使用多线程时,一般很少有多个线程能在其生命期内进行完全独立的操作。更多的情况是一些线程进行某些处理操作,而其他的线程必须对其处理结果进行了解。正常情况下对这种处理结果的了解应当在其处理任务完成后进行。 如果不采取适当的措施,其他线程往往会在线程处理任务结束前就去访问处 阅读全文
posted @ 2011-11-22 19:28 早起两小时 阅读(292) 评论(0) 推荐(0) 编辑
摘要: 瑶瑶按:创建线程好几个函数可以使用,可是它们有什么区别,适用于什么情况呢?参考了一些资料,写得都挺好的,这里做一些摘抄和整合。【参考1】CreateThread, AfxBeginThread,_beginthread, _beginthreadex的区别 =====================================================================1、CreateThread——Windows的API函数2、_beginthreadex——MS对C Runtime库的扩展SDK函数3、AfxBeginThread——MFC中线程创建的MFC函数Cr 阅读全文
posted @ 2011-11-18 09:25 早起两小时 阅读(593) 评论(0) 推荐(0) 编辑
摘要: 1.在当前文件中引入命名空间这是我们最熟悉的用法,例如:using namespace std;2.在子类中使用 using 声明引入基类成员名称(参见C++ primer)在private或者protected继承时,基类成员的访问级别在派生类中更受限:class Base {public:std::size_t size() const { return n; }protected:std::size_t n;};class Derived : private Base { . . . };在这一继承层次中,成员函数 size 在 Base 中为 public,但在 Derived 中为 阅读全文
posted @ 2011-10-22 13:55 早起两小时 阅读(14654) 评论(0) 推荐(0) 编辑
摘要: 本文转自http://www.cppblog.com/mzty/archive/2008/02/18/42877.html前言C++中的虚函数的作用主要是实现了多态的机制。关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。关于虚函数的使用方法,我在这里不做过多的阐述。大家可以看看相关的C++的书籍。在这篇文章中,我只想从虚函数的实现机制上 阅读全文
posted @ 2011-10-22 13:54 早起两小时 阅读(331) 评论(0) 推荐(0) 编辑
摘要: 小数点.后“*”表示输出位数,具体的数据来自参数表printf格式字符串中,与宽度控制和精度控制有关的常量都可以换成变量,方法就是使用一个“*”代替那个常量,然后在后面提供变量给“*”。同样,小数点.前也可以添加*,也要用户输入一个位宽值来代替,表示输出的字符所占位宽。#include <cstdio>#include <iostream>int main(){ char *s = "this is test example"; int a,b; printf("%.*s\n", 10, s);//这里的常量10就是给*号的,你也 阅读全文
posted @ 2011-10-21 09:33 早起两小时 阅读(11154) 评论(0) 推荐(0) 编辑