摘要: 今天偶尔看到了一个算法问题(八皇后问题),回想一下还是在算法课上学习过的,于是,自己总结了一下,写了这篇日志算法提出:在国际象棋棋盘上(8*8)放置八个皇后,使得任意两个皇后之间不能在同一行,同一列,也不能位于同于对角线上。问共有多少种不同的方法,并且指出各种不同的放法。算法思路: 首先我们分析一下问题的解,我们每取出一个皇后,放入一行,共有八种不同的放法,然后再放第二个皇后,同样如果不考虑规则,还是有八种放法。于是我们可以用一个八叉树来描述这个过程。从根节点开始,树每增加一层,便是多放一个皇后,直到第8层(根节点为0层),最后得到一个完全八叉树。 紧接着我们开始用深度优先遍历这个八叉... 阅读全文
posted @ 2012-04-11 17:11 雪狼的程序故事 阅读(36035) 评论(1) 推荐(6) 编辑
摘要: 排序是计算机应用中的一个非常重要的操作。平常我们总会听到一些算法,但是我们总是似懂非懂的写着代码,今天我将一般常见的排序算法进行一个总结。本次总结只涉及内部排序(所谓内部排序是指在内存中进行的排序)首先说一个概念:稳定排序与非稳定排序如果一个序列中原来相同的元素,排序完成后,仍然保持着原来的顺序,那么就成为稳定排序,反之就是非稳定排序。 插入排序 (1).直接插入排序(Straiht Insertion Sort) 算法描述:如果有一个已经排好序的序列 {R(20),R(35),R(88)},当要插入一个R(66)时,需要与各... 阅读全文
posted @ 2012-03-23 18:20 雪狼的程序故事 阅读(4626) 评论(2) 推荐(2) 编辑
摘要: 今天在stackoverflow上看到有一个这样提问说下面这段程序第二个输出语句有问题#include <stdio.h>#include <stdlib.h>#include <string.h>class C {public: char* s; C(char* s_) { s=(char *)calloc(strlen(s_)+1,1); strcpy(s,s_); }; ~C() { free(s); };};void func(C c) {};void main() { C o="hello"; pri... 阅读全文
posted @ 2012-03-10 00:36 雪狼的程序故事 阅读(1419) 评论(5) 推荐(1) 编辑
摘要: 今天看完了set,multimap,multiset关联容器,回顾一下:首先set容器与map不同的是set中value_type类型不是pair类型,而是key_type类型,没有了与map对应的mapped_type,与map不同的还有不支持下标操作。set容器由于只有键值,所以适合作为排除集使用。multimap 与 multiset顾名思义,是多值的map容器与set容器,也就是一个键值对应多个值。对于multimap与multiset的删除操作,由于一个键对应多个项目,所以带有一个键参数的erase函数会删除跟这个键关联的所有元素。但是带有迭代器或迭代器范围的erase函数只会删除迭 阅读全文
posted @ 2012-03-08 14:51 雪狼的程序故事 阅读(2159) 评论(2) 推荐(3) 编辑
摘要: 转载http://hi.baidu.com/%B3%CF%D5%F7id/blog/item/56b040fc9dad621a08244d21.htmlParser Generator的使用说明2010年05月13日 星期四 18:35parser generator的使用方法这里只以vc6.0为例,首先打开parser generator编辑器,选择Project->LibBuilder在LibBuilder对话框中选中Visual C++(32-bit),按属性键Properties后确以下设置Script file name.\Cpp\Script\msvc32.lbsNameVi 阅读全文
posted @ 2012-03-06 20:47 雪狼的程序故事 阅读(4145) 评论(0) 推荐(0) 编辑
摘要: Map容器,顾名思义,地图,是用来进行索引的一个容器。在定义Map容器之前,c++首先定义了一个pair类型,这个类型有两个参数pair<T1,T2>。 pair类型的对象通过点号(.)访问其成员(都是公有成员)first与second。 pair类型可以通过make_pair()函数来进行初始化。下面定义map类型的对象 map<string ,int> objmap;//这个语句定义了一个空的map对象,其中string类型的为索引,int类型的为其值。对于自定义类型作为键类型,特别要注意的是自定义类型必须定义<这个操作符。并且必须是严格弱排序。也即两个键比较 阅读全文
posted @ 2012-03-01 22:02 雪狼的程序故事 阅读(3469) 评论(0) 推荐(0) 编辑
摘要: 在修改hosts文件时可能遇到无法修改的情况下面是解决方法点击开始 点击运行 输入 CMD 回车 然后复制以下代码 右键粘贴到CMD中即可:echo y|cacls %windir%\system32\drivers\etc\hosts /g everyone:fattrib -r -a -s -h %windir%\system32\drivers\etc\hosts这样的话就允许修改hosts文件了。 阅读全文
posted @ 2012-02-22 11:39 雪狼的程序故事 阅读(710) 评论(0) 推荐(0) 编辑
摘要: 不管是在c++,还是c#,或是java中,当人们一提到构造函数是,马上就回有人回答,是用来初始化成员变量的,没错,但是殊不知,后面却隐含了很多东西。首先:构造函数用初始化式与在函数里面直接初始化有什么不同。我先简单说一下初始化式,可能有人已经忘了什么是构造函数的初始化式。其实初始化式就是一个以冒号开始,接着是一个以逗号分隔的数据成员列表,每个数据成员后面跟着一个放在圆括号里的初始化式。而初始化式只能在构造函数的定义中而不能再声明中指定。如:class A{ public int a,b; public string c; A(const string &s):a(3),b(4),c(s 阅读全文
posted @ 2011-12-09 19:22 雪狼的程序故事 阅读(2168) 评论(3) 推荐(0) 编辑
摘要: 不用AuxDIBImageLoad()向opengl中载入bmp纹理 这个函数从硬盘中加载24位window DIB 位图。呵呵,解释的多了。为了节约时间,我没有加载整个bmp图的Header部分,而仅仅获取我们需要的部分:宽度,高度,和图片大小。 下面是代码部分unsigned int LoadTex(string Image){ unsigned int Texture; FILE* img = NULL; img = fopen(Image.c_str(),"rb"); unsigned long bWidth = ... 阅读全文
posted @ 2011-12-03 19:24 雪狼的程序故事 阅读(5946) 评论(1) 推荐(0) 编辑
摘要: c_str函数的返回值是const char*的,不能直接赋值给char*,所以就需要我们进行相应的操作转化,下面就是这一转化过程。 c++语言提供了两种字符串实现,其中较原始的一种只是字符串的c语言实现。与C语言的其他部分一样,它在c++的所有实现中可用,我们将这种实现提供的字符串对象,归为c-串,每个c-串char*类型的。 标准头文件<cstring>包含操作c-串的函数库。这些库函数表达了我们希望使用的几乎每种字符串操作。 当调用库函数,客户程序提供的是string类型参数,而库函数内部实现用的是c-串,因此需要将string对象,转化为char*对象,而c_str()提供 阅读全文
posted @ 2011-12-03 19:02 雪狼的程序故事 阅读(1112) 评论(0) 推荐(0) 编辑