摘要: 一。实践题目 7-2 工作分配问题 二。问题描述 设有n件工作分配给n个人。将工作i分配给第j个人所需的费用为cij 。 设计一个算法,对于给定的工作费用,为每一个人都分配1 件不同的工作,并使总费用达到最小。 解空间: 约束函数:if(sum<=Min) 判断对比当前选择后的费用sum与之前记录的 阅读全文
posted @ 2018-12-22 00:14 luzhibin 阅读(94) 评论(0) 推荐(0)
摘要: 一。对回溯算法的理解 回溯的实质是在问题的解空间进行深度优先搜索,在深度搜索时,向下搜索结点时若满足约束条件则返回上一个结点向其他结点进行深度搜索。 二。请说明“子集和”问题的解空间结构和约束函数 设集合S={x1,x2,…,xn}是一个正整数集合,c是一个正整数,子集和问题判定是否存在S的一个子集 阅读全文
posted @ 2018-12-21 23:54 luzhibin 阅读(213) 评论(0) 推荐(0)
摘要: 一。实践题目 7-3 程序存储问题问题描述 二。问题描述 设有n 个程序{1,2,…, n }要存放在长度为L的磁带上。程序i存放在磁带上的长度是 li,1≤i≤n。 程序存储问题要求确定这n 个程序在磁带上的一个存储方案, 使得能够在磁带上存储尽可能多的程序。 对于给定的n个程序存放在磁带上的长度 阅读全文
posted @ 2018-11-29 20:41 luzhibin 阅读(119) 评论(0) 推荐(0)
摘要: 一。对贪心算法的理解 贪心算法是指,在对问题求解时,做出在当前看来是最好的选择,即局部最优,不从整体最优上加以考虑。 二。汽车加油问题的贪心性质 汽车在出发至下一站之前判断剩余油量能否支持到达下一站,可以则到达下一站并减少油量,不可以则加满油后再进行判断。 三。学习过程中遇到的问题及结对编程的情况 阅读全文
posted @ 2018-11-29 19:51 luzhibin 阅读(139) 评论(0) 推荐(0)
摘要: 1.实践题目 7-2 最大子段和 给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时,定义子段和为0。 要求算法的时间复杂度为O(n)。 输入格式: 输入有两行: 第一行是n值(1<= 阅读全文
posted @ 2018-11-10 17:17 luzhibin 阅读(136) 评论(0) 推荐(0)
摘要: 一。动态规划 1.动态规划算法的基本思想是将待求解问题分解成若干子问题,先求解子问题,然后从这些子问题的解得到原问题的解。 2.某一问题可用动态规划算法求解的显著特征是该问题具有最有优子结构性质。 3.动态规划算法的四个基本步骤 (1)找出最优解的性质,并刻画其结构特征 (2)递归定义最优质 (3) 阅读全文
posted @ 2018-11-10 15:21 luzhibin 阅读(754) 评论(0) 推荐(0)
摘要: 实践题目 改写二分搜索算法: 问题描述:设a[0:n-1]是已排好序的数组,请改写二分搜索算法,使得当x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。 算法描述:算法在二分法算法的基础上添加特殊情况的算法,1.数值在数组中找 阅读全文
posted @ 2018-10-21 17:27 luzhibin 阅读(126) 评论(0) 推荐(0)
摘要: 1.二分法思想 二分法在编程中是一种十分重要的算法,其主要思想是将问题区间不断的折半进而能更快的寻找到目标,二分法能将数据较大的问题规模很好地缩小。 使用条件:数组中的元素有序 时间复杂度:O(log2n) 二分法算法: int BIN(int a[], int key, int n) { int 阅读全文
posted @ 2018-10-21 16:10 luzhibin 阅读(208) 评论(0) 推荐(0)