C++
多层感只鸡
这个作者很懒,什么都没留下…
展开
-
八数码问题的三种解决方式,其四:深度优先搜索的另一个思路
在我的第一版代码中关于我的初版DFS代码我有一定的疑问,并且在其中有关于疑问的具体说明,这几天突然想到了解决方案就马上开始实践结果能够成功跑出答案因此对原版的代码进行更新。先对思路进行说明:第一版DFS代码中主要的疑问如下:假如0移动到target为目标状态,那么容易得到路径①为正确最短路径,但是在代码中初始0节点扩展时可能并不是向着下扩展,而是先向右扩展,那么会首先走向路径...原创 2020-05-04 20:03:23 · 2191 阅读 · 1 评论 -
八数码问题的三种解决方式,其三:启发式搜素
启发式搜索的核心是找到一种方法来优化open表,让里面的节点有一个优先度,优先度大的先放进close表中处理,优先度低的后处理,这样就不同于宽度或者深度的每一个都检验,有很大的优化空间,可以节约大量时间,也可以节约空间(原因是一些节点优先度非常低的就不用扩展因此就不会产生后续转态,因此能节约一定的空间)。启发式算法的核心,就是找到节点与节点之间的区别,再量化这个区别,最后用优先队列维护这个值,...原创 2020-04-07 21:31:44 · 1579 阅读 · 0 评论 -
八数码问题的三种解决方式,其二:深度优先搜索 加自己的一些疑惑
接上文宽度优先搜索,虽然深度优先和宽度优先在理论上的差别不大,但是在最终的测试中我还是遇到了一些问题,导致26步计算不出来,只能用了一个中间状态来验证了一下思路正确而已。这里先写一下自己的疑惑假如0移动到target为目标状态,那么容易得到路径①为正确最短路径,但是在代码中初始0节点扩展时可能并不是向着下扩展,而是先向右扩展,那么会首先走向路径②,此时会深度优先会优先扩展路径②,这个时...原创 2020-04-07 21:27:50 · 2286 阅读 · 0 评论 -
八数码问题的三种解决方式,其一:宽度优先搜索
老师要求写一下八数码问题的三种解决方法,,,哎真的是苦了孩子了,只有在网上找找大佬们的代码来扩展了一下思路才勉强写出来,这里也分享一下自己的理解。宽度优先与深度优先算法在八数码问题上的主要操作大同小异,主要的差别在于,带扩展节点扩展之后放在对列的前后的区别,宽度优先放在表后,保证一层一层递进式的处理。深度优先放在表前,保证当前节点能够优先扩展到达到深度界限为止。从初始节点到目标节点一共...原创 2020-04-07 21:23:24 · 5527 阅读 · 0 评论 -
函数参数传递 赋值调用&引用调用&非常量引用调用
传值调用函数的形参被初始化为实参的值的复制,这种传递参数的方式称为传值调用。// compute the median of a `vector<double>'// note that calling this function copies the entire argument `vector'double median(vector<double> v...原创 2020-02-19 17:40:59 · 660 阅读 · 0 评论 -
C++ template typename的基本使用
使用template <typename T>申明函数template <typename T>T sum(T a, T b){ return a+b;}如果需要定义加法函数时,既需要int型也需要double型,则需要定义两个函数,这里使用template typename就显得很方便。#include<cstdio>#inc...原创 2020-02-19 16:21:13 · 752 阅读 · 0 评论 -
C++ 抽象类
抽象类的定义:在C++中,含有纯虚函数的类称为抽象类,它不能生成对象。抽象类是不完整的,它只能用作基类。在面向对象方法中,抽象类主要用来进行类型隐藏和充当全局变量的角色。而在C++中没有专门的接口类,因此在实现接口时,常写一个抽象类,来实现接口中的某些子类所需的通用方法,接着在编写各个子类时,即可继承该抽象类来使用。抽象类实例:#include<iostream>...原创 2020-02-06 22:02:57 · 655 阅读 · 0 评论 -
C++ 虚函数 纯虚函数
虚函数与纯虚函数其实是两个概念,而平常我自己接触到的虚函数往往是纯虚函数,开始觉得这个概念无关紧要,后来发现还是需要认真区分为好:首先虚函数是指在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数。用法:virtual 函数返回类型 函数名(参数表) {函数体};两者的区别:一·函数申明:虚函数,在函数的声明(不是定义)语句前加“virtual”, 如 ...原创 2020-02-06 15:11:20 · 257 阅读 · 0 评论 -
第三章 控制符setprecision的使用
书中的代码:streamsize prec = cout.precision(); cout << "Your final grade is " << setprecision(3) << 0.2 * midterm + 0.4 * final + 0.4 * sum / count << setpre...原创 2018-12-05 11:16:01 · 866 阅读 · 0 评论 -
c++ 类的构造函数及子类的构造函数
类在创建的时候需要调用构造函数,假如对系统没有任何说明,则会调用系统默认的构造函数,在需要自行写构造函数的时候往往是一下几种情况:1.构造函数中不带参数:#include<iostream>using namespace std;class Student{ public: void setID(int ID); int getID...原创 2020-02-04 21:47:51 · 1583 阅读 · 0 评论