- 博客(4)
- 收藏
- 关注
原创 回溯法——n皇后问题
问题描述n皇后问题是指一个在n*n的国际象棋棋盘上放置n个皇后,使得这n个皇后两两均不在同一行、同一列、同一条对角线上,求合法的方案数。算法分析由题意知,限界条件是n个皇后两两均不在同一行、同一列、同一条对角线上,我们设置一个attack二维数组,用来判断是否可以放置皇后,0表示可以放,1表示不可以放。对于在同一行、同一列、同一对角线上的皇后位置均设为1。例如,对应的代码为public void update(int[][]arr,int x,int y,int n){
2022-01-08 23:25:49
38
原创 分支限界——旅行商问题分析
问题描述某售货员要到若干城市去推销产品,已知各城市之间的路程(或旅费)。他要选定一个城市出发,经过每个城市一遍,最后回到出发的城市,使总的路程(或旅费)最小。分支限界基本思想分支限界法常以广度优先或以最小耗费优先的方式搜索问题的解空间树。广度优先:搜索树的节点过程是从左到右的顺序的深度优先:搜索树的节点过程是从上到下的顺序的解空间树:表示问题解空间的一颗有序树,在下面会详细说到。树分为子集树和排列树。子集树:当所给问题是从n个元素的集合S中找出S满足某种性质的子集时,相应的解
2022-01-04 21:27:11
1186
1
原创 二分搜索——给定a,用二分设计法求a^n的算法
题解思路a^n = (a^(n/2))*2 = (a^((n/2*2)*2))*2 = ......代码这里以2^4为例public class Test { public static void main(String[] args){ System.out.println(pow(2,4)); } public static double pow(double a,int n){ if(n==0){ ret
2022-01-04 10:11:58
2055
原创 经典递归分治问题——汉诺塔
递归算法总体思想先将一个大问题逐步分解成小问题,直到满足条件,最后将这些小问题又自底向上逐步求出原问题的解。问题描述设a,b,c是3个塔座。开始时,在塔座a上有一叠共n个圆盘,这些圆盘自下而上,由大到小地叠在一起。各圆盘从小到大编号为1,2.... , n,现要求将塔座a上的这一叠圆盘移到塔座b上,并仍按同样顺序叠置。在移动圆盘时应遵守以下移动规则:规则1:每次只能移动1个圆盘;规则2:任何时刻都不允许将较大的圆盘压在较小的圆盘之上规则3:在满足移动规则1和2的前提下,可将圆盘移至a,
2022-01-03 22:13:51
788
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人