2013年11月15日
摘要:
1、现讲最优子结构性质,所谓的最有子结构性质是指:一个问题的最优解包含子问题的最优解。最短路径满足最优子结构。MinPath(i,j)表示i与j之间的最短路径。假如MinPath(i,j)={Vi...Vk...Vs...Vj},则MinPath(k,s)={Vk...Vs}。反证法很容易证明:如果MinPath(k,s)≠{Vk...Vs},说明存在一个更短的路径,那么{Vi...Vk...Vs...Vj}也不是最短路径,这与已知条件矛盾。2、思路:Dijkstra最短路径算法满足最优子结构性质,因此每个点只需要知道自己的前驱节点,逆序排一下,就知道了路上的节点。同时,还要记录最短距离。 .
阅读全文
posted @ 2013-11-15 17:41
Andy Niu
阅读(542)
推荐(0)
摘要:
1、解决的问题: 在python中,每个py文件都是一个模块,也都是一个可执行文件,即包含main方法。因此,对每个py文件,可以单独运行,也可以import它给其他客户使用,这两种情况不一样,因为客户import一个py文件,并不想运行它。如何区分这两种情况呢?2、如何解决: __name__属性,当运行py文件时,它的值是__main__,当import的时候,它的值是文件名。这样在py文件中,就能区分当前文件是被运行还是被import,不同的情况,执行不同的代码。
阅读全文
posted @ 2013-11-15 16:14
Andy Niu
阅读(1652)
推荐(0)
2013年11月14日
摘要:
1、思路:假定前面的序列已经有序,当前元素插入前面有序的序列。从后往前遍历,比当前元素大的,往后移,为当前元素腾出位置。2、代码: 1 template 2 void InsertSort(vector& vec) 3 { 4 for(int i=1; i0 && target 2 int FindPosition(const vector& vec,int lhs,int rhs,T target) 3 { 4 if(rhs-lhs ==1) 5 { 6 if(target>vec[lhs]) 7 { 8 re...
阅读全文
posted @ 2013-11-14 19:32
Andy Niu
阅读(284)
推荐(0)
摘要:
1、思路:对于当前第一个数,假定它是最小的,遍历后面的数,发现比当前数还小的,进行交换,这样就保证了当前第一个为最小的。2、代码: 1 template 2 void SelectSort(vector& vec) 3 { 4 for(int i=0; i 2 void SelectSort_2(vector& vec) 3 { 4 for(int i=0; i< vec.size();i++) 5 { 6 int index_Min = i; 7 for(int j=i+1;j < vec.size();j++) 8 ...
阅读全文
posted @ 2013-11-14 19:27
Andy Niu
阅读(279)
推荐(0)
摘要:
1、思路:内层循环,比较当前元素与相邻的下一个元素,顺序不对,进行交换,这样就把最大的数沉到底部。外层循环,对于每次剩余的数,把最大的沉到底部。2、源码: 1 template 2 void BubbleSort(vector& vec) 3 { 4 for(int i=0; ivec[j+1]) 9 {10 swap(vec,j,j+1);11 }12 }13 }14 }
阅读全文
posted @ 2013-11-14 19:19
Andy Niu
阅读(235)
推荐(0)
摘要:
1、在C++中,Animal a = Person(); 这样写是不行的,因为a的内容不能使用Person的内容来填充。2、在Python中,变量不需要声明,而且可以赋任何值。Python是如何做到的? Python的设计理念是:变量和实体分离,变量可以认为是一个指针,指向某个实体,而且可以指向任何实体。这个变量只能指向实体,不能包含实体的内容。对变量赋值,不是修改指向的实体,而是使变量指向另一个实体。 也就是说,变量没有办法修改指向的实体,修改变量只不过是让他指向另一个实体。 变量可以间接的修改实体,比如a,b指向同一个容器,a修改容器的第一个元素,b容器的第一个元素也发生变化。但这本...
阅读全文
posted @ 2013-11-14 17:13
Andy Niu
阅读(789)
推荐(0)
摘要:
1、如果手里有一把锤子,看啥都像钉子。2、KISS :Keep It Simple Stupid3、DRY:Donot Repeat Yourself4、Make Clean Code Fast 比 Make Fast Code Clean重要,并且简单。5、避免垃圾进,垃圾出。正确的做法是:垃圾不让进,或者垃圾进给出错误提示。6、简单就是美,奥卡姆剃刀原理,没有必要,勿增实体。7、好的代码尽量做到自说明的,不需要太多的注释。8、一切软件的本质是增删改查,和数据可视化。这里的数据是结构化的数据,不同的结构把无差别的字节组织称千差万别的对象,千差万别的对象相互协作构成系统。
阅读全文
posted @ 2013-11-14 14:11
Andy Niu
阅读(241)
推荐(1)
摘要:
1、考虑下面的情况:有个Person类,内部有个age字段。正常情况下,定义和赋值为:Person p = Person(8);p = Person(9);但是有个家伙很懒,他想这么写:Person p = 8;p =9;这样写也是可以的,因为编译器知道你的意图,运行的时候会进行一次隐式类型转换,中间适配一个临时对象。这就是隐式类型转换,但这样写不好,因为语义不通。要避免这种情况,使用explicit,这样编译器就会曝出错误。2、现在在考虑下面的需求:判断p的年龄是否大于5,正常的写法是:if(p.GetAge()>5){....}但是,上面的家伙还是很懒,想直接这样写:if(p>
阅读全文
posted @ 2013-11-14 14:10
Andy Niu
阅读(849)
推荐(0)
2013年11月13日
摘要:
1、什么是临时对象? swap方法中,常常定义一个temp对象,这个temp对象不是临时对象,而是局部对象。这里所说的临时对象是不可见的,在原代码中是看不到的。2、为什么会产生临时对象? a、客户期望的数据与你提供的数据不一致,需要隐式类型转换,中间需要适配一下,建立一个临时对象。 b、方法返回值,他是没有名字的,起到一个传递作用,方法内部的局部对象-->方法返回值-->主调方法中的接受对象。 c、异常处理,分为两个过程:抛出异常,捕获异常。抛出异常相当于return 方法内的局部对象,外部要有一个匿名的临时对象接收。catch语句类似于调用方法,将临时对象传给catch语句。3、
阅读全文
posted @ 2013-11-13 17:38
Andy Niu
阅读(2713)
推荐(0)
2013年11月12日
摘要:
原文:http://blog.csdn.net/hackbuteer1/article/details/7487694C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程设计中的static1、静态全局变量在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。我们先举一个静态全局变量的例子,如下:[cpp]view plaincopy#includeusingnamespacestd;staticintn;//定义静态全局变量voidfn()
阅读全文
posted @ 2013-11-12 15:52
Andy Niu
阅读(301)
推荐(0)