自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 回溯算法--三连游戏(人机对战)

程序的核心部分在于计算机如何选择下棋的位置。采用的策略叫作极小极大策略。通过一个赋值函数来给一个位置的“好坏”定值。能使计算机获胜的位置得到值+1;平局得到0;使计算机输棋的位置得到值-1。通过考察盘面就能够确定输赢的位置叫作终端位置。  如果一个位置不是终端位置,那么该位置的值通过递归假设双方最优棋步而确定。这叫做极小极大策略,因为下棋的一方(人)试图极小化这个位置的值,而另一方(计算机)却要使它

2017-08-24 16:47:14 554

原创 回溯算法--收费公路重建问题

通过点与点之间的距离重新构造出点集。距离集大小为N(N-1)/2,N为点的个数。驱动程序#include <iostream>#include <vector>#include <set>using namespace std;bool turnpike(vector<int> & x,multiset<int> d,int n){ bool place(vector<int> &

2017-08-21 18:47:21 800

原创 测试一个大数是否是素数

如果P是素数,且0int witness(const int & a,const int & i,const int & n){ if(i==0) return 1; int x=witness(a,i/2,n); if(x==0) return 0; int y=(x*x)%n; if(y==1&&x!=1&&x!=n-1)

2017-08-20 20:49:51 366

原创 随机数生成器

头文件static const int A=48271;static const int M=2147483647;static const int Q=M/A;static const int R=M%A;//x[i+1]=Ax[i]modMclass Random{public: explicit Random(int initialValue=1);//x[0]种子

2017-08-19 21:31:20 1246

原创 动态规划—矩阵乘法排序

矩阵乘法满足结合律,因此可以选择不同的乘法顺序来进行。矩阵乘法进行的次数等于两个子序列各自乘法次数加上两个子序列做一次乘法所需次数。 Mleft,right=Mleft,i+Mi+1,right+cleftcicrightM为乘法次数,c[i]等于第i个矩阵的列数。c[0]为第一个矩阵的行数,c[i-1]为第i个矩阵的行数 由于递归在一些情况下会重复计算,导致效率急剧降低,因此需要将递归变为非递

2017-08-18 18:31:37 542

原创 深度优先搜索寻找割点

如果无向连通图不存在删除后剩下的图不再连通的顶点,则该图为双连通。如果不是双连通的图,那么那些删除后剩下的图不再连通的顶点叫做割点。 执行深度优先搜索,按照搜索顺序给顶点编号Num。然后后序遍历,计算顶点的Low值,其为顶点通过该序(可能包含背向边)能到达的最小顶点。 Low(v)为各项中的最小值: 1、Num(v) 2、所有背向边(v,w)中的最低Num(w) 3、所有边(v,w)中的最

2017-08-14 21:07:44 1198

原创 Dijkstra算法那--赋权最短路径

相对于无权最短路径,赋权最短路径多了一个成员know来标记顶点是否已知。从未知的顶点中找到路径最短的顶点,标记为已知,然后如果它的未知邻接顶点距离dw大于dv+Cv,w,则更新dw。头文件#include <vector>#include <map>#include <iostream>static const int MAX=10000;using namespace std;class

2017-08-11 17:17:58 753

原创 词梯游戏

//无权最短路径问题#include <iostream>#include <unordered_map>#include <string>#include <vector>#include <queue>using namespace std;unordered_map<string,string>findChain(const unordered_map<string, vecto

2017-08-07 21:52:32 783

原创 生成迷宫并找出走出迷宫的路径

利用不相交集类生成迷宫,具体见 http://blog.csdn.net/blubluhao/article/details/76445377然后利用无权图的最短路径选择找出走出迷宫的路径,具体见 http://blog.csdn.net/blubluhao/article/details/76726887首先生成迷宫,然后利用已经生成的迷宫构建出一个图。迷宫的所有单元构成图的顶点,单元间没有墙

2017-08-06 21:17:18 1892

原创 无权最短路径选择

图类的数据成员除了顶点的集合外还有一个记录起始顶点的数据成员。顶点的数据成员有距离起始顶点的最短距离,邻接表,最短路径上顶点的上一个顶点三个数据成员。首先将起始顶点入队,距离为零,然后将其出队,更新其邻接顶点的距离并把它们放入队列。重复到队列为空为止。头文件#include <vector>#include <climits>#include <iostream>class Graph{pu

2017-08-05 17:15:07 627

原创 拓扑排序

拓扑排序是针对有向无圈图的顶点的的一种排序。每个顶点拥有入度,邻接表,拓扑序三个成员。首先找到入度为零的顶点将其放入队列,然后将其出队,删除顶点和它的边。然后更新邻接顶点的入度,如果入度为零,则将顶点放入队列,直到队列为空。最后输出拓扑序。头文件#include <vector>class Graph{public: explicit Graph(int vertexNum):v(ver

2017-08-05 15:04:33 254

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除