TSP问题目前有多种解法:搜索解法,动归解法,启发式解法。这里就针对poj 3311问题给出了前两种解法。
搜索解法:这种解法其实就是计算排列子集树的过程。从0点出发,要求遍历1,2,3点后回到0点。以不同的顺序来依次遍历1,2,3点就会导出不同的路径(0->1->2->3->0;0->1->3->2->0等等),总共有3!=6条路径需要考虑,从中选出最短的那条就是所求。搜索解法的时间复杂度为O(n!)。
动归解法:仔细观察搜索解法的过程,其实是有很多重复计算的。比如从0点出发,经过1,2,3,4,5点后回...
题意:每位新娘打扮得几乎一模一样,并盖上大大的红盖头随机坐成一排;然后,让各位新郎寻找自己的新娘.每人只准找一个,并且不允许多人找一个.最后,揭开盖头,如果找错了对象就要当众跪搓衣板...假设一共有N对新婚夫妇,其中有M个新郎找错了新娘,求发生这种情况一共有多少种可能.
解法:从N中选出M个C[n][m],然后乘上错排公式;f[n]=(n-1)*(f[n-1]+f[n-2]);f[0]=...
题意:
给定n个点,m条有向边,邮箱容量。
起点在1,终点在n,开始邮箱满油。
下面m行表示起点终点和这条边的耗油量(就是长度)
再下面给出一个数字m表示有P个加油站,可以免费加满油。
下面一行P个数字表示加油站的点标。
再下面一个整数Q
下面Q行 u v 表示在u点有销售站,可以卖掉邮箱里的任意数量的油,每以单位v元。
问跑到终点能获得最多多少元。
先求个每个点的最大剩...
Lotto
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 1411 Accepted Submission(s): 697
Problem Description
In a Lotto I have eve...
本节介绍的是快速合并的优化算法。基本思想就是在每个节点上增加重量的概念,每次操作的时候将重量小的部件挂在重量大的部件之下。这样就避免了树形结构太高的问题。
下图展示了优化前后的树形结构深度的对比。
证明
可以证明每个节点的深度最大为lgN。
因为每次合并的时候较小的部件要放在较大的部件之下,所以如果要增...
应用
渗透问题
游戏中会用到。
动态连接
最近共同祖先等价有限状态机物理学Hoshen-Kopelman算法:就是对网格中的像素进行分块Hinley-Milner多态类型推断Kruskai最小生成树Fortran等价语句编译形态学开闭属性Matlab中关于图像处理的bwlabel函数
渗透问题
一个N×...
目标
对所有类型的数据进行排序。
问题
排序函数如何知道比较的是哪种类型的数据呢?
回调函数
这时候就需要引入回调函数的概念了。回调函数就是将可执行的代码作为参数进行传递。
实现回调的方法
在Java中可以通过接口来实现,在C语言中可以通过函数指针来实现,C++中可以通过class-type functor,也就是重载操作符oper...
在梳理完quick-cocos2d-x框架的各个目录后,我们开始我们的实例教程,在helloworld后面,加上一张图片,lua编辑器,我用的lua editor,还不错。
我们首先还是参照教程,创建一个game01。命令:create_project -p com.cocos2dlua.game01 -r landscape,这次命令,我加了一个-r,设置为横向的屏幕用quickplaye...
归并排序,递归实现
public class MergeSort2 {
// 对data数组中的 [a,b) 区间的数据进行归并排序,
// 排序结束后,[a,b)间数据处于升序有序状态
static void mergeSort(int[] data, int a,int b)
{
if (a >= b) return;
int mid=(a+b)/2;
mergeSort(da...
题意:求区间内不含62和4的数的个数;
解法:数位dp。int dfs(int pos,int pre,bool limit,bool have),pos表示dp到的数位位置,pre表示前一个数位的数字,limit表示到此时数是否有下降(此位取数字是否受限制的意思),have表示之前是否有62;4的排除是靠在每次枚举下一位i时不取4即可;每个case的dp值都是一样的,所以只需要计算一遍...