
算法设计
关于算法
空白__@
无
展开
-
算法设计--N皇后问题--回溯算法
算法设计--N皇后问题--回溯算法 在n×n格的棋盘上放置彼此不受攻击的n个皇后。 按照国际象棋的规则,皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。n皇后问题等价于在n×n格的棋盘上放置n个皇后,任何两个皇后不放在同一行或同一列或同一斜线上。 编程要求:找出一个n×n格的棋盘上放置n个皇后并使其不能互相攻击的所有方案。输入样例 输出样例 5 1352...原创 2020-04-15 16:54:27 · 1264 阅读 · 0 评论 -
鱼塘钓鱼(贪心算法)--算法设计
算法设计--鱼塘钓鱼约翰有h(1≤h≤16)个小时的时间,在该地区有n(2≤n≤25)个湖,这些湖刚好分布在一条路线上,该路线是单向的。约翰从湖1出发,他可以在任一个湖结束钓鱼。但他只能从一个湖到达另一个与之相邻的湖,而且不必每个湖都停留。已知在最初5分钟,湖i预计钓到鱼的数量为fi(fi≥0)。以后每隔5分钟,预计钓到鱼的数量将以常数di(di≥0)递减。如果某个时段预计钓到鱼的...原创 2020-04-10 18:11:46 · 1546 阅读 · 0 评论 -
算法设计--整数划分问题(递归)
算法设计--整数划分问题(递归)整数划分问题是算法中的一个经典命题之一。把一个正整数n表示成一系列正整数之和:n=n1+n2+.....+nk(其中,n1≥n2≥......nk≥1,k≥1)。正整数n的这种表示称为正整数n的划分。正整数n的不同划分个数称为正整数n的划分数,记作p(n)。 正整数6有如下11中不同的划分,所以p(6)=11。 6 5+1...原创 2020-04-08 16:02:28 · 530 阅读 · 0 评论 -
算法设计--最大子段和问题--分治法
算法设计--最大子段和问题--分治法给定由n个整数组成的序列(a1, a2, …, an),最大子段和问题要求该序列形如的最大值(1≤i≤j≤n),当序列中所有整数均为负整数时,其最大子段和为0。例如,序列(-20, 11, -4, 13, -5, -2)的 最大子段和为:。最大子段和问题的分治策略是:(1)划分:按照平衡子问题的原则,将序列(a1, a2, …, an)划分成...原创 2020-04-07 20:25:59 · 4710 阅读 · 0 评论 -
算法设计--0-1背包问题
0-1背包问题通过动态规划给定一个物品集合s={1,2,3,…,n},物品i的重量是wi,其价值是vi,背包的容量为W,即最大载重量不超过W。在限定的总重量W内,我们如何选择物品,才能使得物品的总价值最大。 如果物品不能被分割,即物品i要么整个地选取,要么不选取; 不能将物品i装入背包多次,也不能只装入部分物品i,则该问题称为0—1背包问题。 如果物品可以拆分,则问题称为...原创 2020-04-04 15:13:13 · 659 阅读 · 0 评论 -
算法设计--木棒加工问题
算法设计--木棒加工问题现有n根木棒,已知它们的长度和重量。要用一部木工机一根一根地加工这些木棒。该机器在加工过程中需要一定的准备时间,是用于清洗机器,调整工具和模版的。 木工机需要的准备时间如下:(1)第一根木棒需要1min的准备时间;(2)在加工了一根长为l ,重为w的木棒之后,接着加工一根长为l ' (l ≤ l' ),重为 w' ( w≤w')的木棒是不需要任何准备时间的,否...原创 2020-04-03 17:37:03 · 2267 阅读 · 1 评论 -
通过贪心算法来解决背包问题
通过贪心算法来解决背包问题 给定一个载重量为M的背包,考虑n个物品,其中第i个物品的重量 ,价值wi (1≤i≤n),要求把物品装满背包,且使背包内的物品价值最大。 有两类背包问题(根据物品是否可以分割),如果物品不可以分割,称为0—1背包问题(动态规划);如果物品可以分割,则称为背包问题(贪心算法)。 我在这里写的是通过贪心算法来解决背包问题。 假设xi是物品i装入背包的部分(...原创 2020-04-01 16:08:17 · 4774 阅读 · 0 评论 -
算法设计--最大子段和问题--动态规划
算法设计--最大字段和问题 问题:给定有n个整数(包含负整数)组成的序列a1,a2,a3,......,an,求该序列子段和的最大值。 注意:当所有整数均为负值时,定义其最大字段和为0;由bj的定义(bj是1到j位置的最大子段和:)易知,当bj-1>0时bj=bj-1+aj,否则bj=aj。 则计算bj的动态规划递归式: bj=max{bj-1+aj,aj},1≤j...原创 2020-03-31 09:18:38 · 880 阅读 · 0 评论