C C++ 新手大宝典
CC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmCC++精华帖合辑.chmC
小游戏的密码
a)坐在另一颗石头上。他想要过去找她,但是因为湖水很脏,到处充满着游客的防晒油,所以他决定用跳的,而不要用游的。
不妙的是Fiona的石头离他的距离超出他所能跳的范围。因此Freddy考虑利用其它的一些石头当作中继站,因此他就可以跳比较小的距离(或许要跳许多次)去找Fiona。要这样子连续的跳,很明显的Freddy一次能跳的距离必须至少和这一串石头间的距离最大的距离一样。因此,介于石头间的蛙跳距离(frog distance,人类也称之为minmax distance)定义为要从Freddy所在的石头要跳到Fiona所在的石头的路径中,最小必须要跳的距离。给你Freddy所在的石头、Fiona所在的石头,以及湖中所有其它石头的坐标,你的任务是算出介于Freddy和Fiona所在石头间的蛙跳距离。
Input
输入含有多组测试数据。每组测试资料的第一列有1个整数n,代表石头的数目(2 <= n <= 200)。接下来的n列每列有2个整数xi,yi(0 <= xi,yi <= 1000)代表第i颗石头的坐
自制小游戏
a)坐在另一颗石头上。他想要过去找她,但是因为湖水很脏,到处充满着游客的防晒油,所以他决定用跳的,而不要用游的。
不妙的是Fiona的石头离他的距离超出他所能跳的范围。因此Freddy考虑利用其它的一些石头当作中继站,因此他就可以跳比较小的距离(或许要跳许多次)去找Fiona。要这样子连续的跳,很明显的Freddy一次能跳的距离必须至少和这一串石头间的距离最大的距离一样。因此,介于石头间的蛙跳距离(frog distance,人类也称之为minmax distance)定义为要从Freddy所在的石头要跳到Fiona所在的石头的路径中,最小必须要跳的距离。给你Freddy所在的石头、Fiona所在的石头,以及湖中所有其它石头的坐标,你的任务是算出介于Freddy和Fiona所在石头间的蛙跳距离。
Input
输入含有多组测试数据。每组测试资料的第一列有1个整数n,代表石头的数目(2 <= n <= 200)。接下来的n列每列有2个整数xi,yi(0 <= xi,yi <= 1000)代表第i颗石头的坐
广度搜索666
假设要在n个城市之间建立通信联络网,则连通n个城市只需要n-1条线路。这时,自然会考虑这样一个问题,如何在最节省经费的前提下建立这个通信网。
可以用连通网来表示n个城市以及n个城市间可能设置的通信线路,其中网的顶点表示城市,边表示两城市之间的线路,赋于边的权值表示相应的代价。对于n个顶点的连通网可以建立许多不同的生成树,每一棵生成树都可以是一个通信网。现在,我们要选择这样一棵生成树,也就是使总的耗费最少。这个问题就是构造连通网的最小代价生成树,简称为最小生成树问题。一棵生成树的代价就是树上各边的代价之和。
构造最小生成树可以有多种算法,下面我们介绍普里姆算法(PRIM)和克鲁斯卡尔算法(KRUSKAL)。
动态规划 初一
假设要在n个城市之间建立通信联络网,则连通n个城市只需要n-1条线路。这时,自然会考虑这样一个问题,如何在最节省经费的前提下建立这个通信网。
可以用连通网来表示n个城市以及n个城市间可能设置的通信线路,其中网的顶点表示城市,边表示两城市之间的线路,赋于边的权值表示相应的代价。对于n个顶点的连通网可以建立许多不同的生成树,每一棵生成树都可以是一个通信网。现在,我们要选择这样一棵生成树,也就是使总的耗费最少。这个问题就是构造连通网的最小代价生成树,简称为最小生成树问题。一棵生成树的代价就是树上各边的代价之和。
构造最小生成树可以有多种算法,下面我们介绍普里姆算法(PRIM)和克鲁斯卡尔算法(KRUSKAL)。
归并排序 排序
它的基本思想是:将待排序的数列分成两个小的数列,先对两个子集进行排序,然后进行两个有序子集的合并,形成排序后的数一列,然后对子的处理方法与刚才的处理方法是一致的,直到子集中只存在一个整数为止。
(1)分治法的三个步骤
设归并排序的当前区间是R[low..high],分治法的三个步骤是:
①分解:将当前区间一分为二,即求分裂点
最短路问题
.Dijkstra算法
Dijkstra算法是解决从网络中任一顶点(源点)出发,求它到其他各顶点(终点)的最短路径问题(或称单源点最短路径问题)。其实Dijkstra算法就是标号法。
Dijkstra算法如下:
(1) 假设用带权的邻接矩阵a来表示带权有向图,a[i,j]表示弧<Vi,Vj>上的权值。若<Vi,Vj>不存在,则置a[I,j]为无穷大。S为已找到从V出发的最短路径的终点的集合,它的初始状态为空集。那么,从v0出发到图上其余各顶点(终点)Vi可能达到的最短路径长度的初值为:dist[I]:=a[v0,I]。
(2) 选择Vj,使得d[j]:=min{dist[I],Vi∈V-S}, Vj就是当前求得的一条从V出发的最短路径的终点。令S=S∪{J}。
(3) 修改从Vj 出发到集合V-S上任一顶点Vk可达的最短路径长度。如果d[j]+a[j,k]<dist[k],则修改d[k]为d[k]=d[j]+a[j,k]。
(4) 重复操作(2)、(3)共n-1次。由此求得从v 到图上其余各顶点的最短路径是依路径长度递增的序列。