摘要:
操作系统考试老师出了两道题,一个是先进先出,另一个是银行家算法,题目如下 1.请使用FCFS算法模拟进程调度。假设系统有n (n>=2) 个进程,给定进程的到达时间以及需要执行的时间长短,给出相应的执行顺序。数据以文件方式给出,文件名为data.fcfs,格式为: 文件共n(N1…Nn)行. 在Nn 阅读全文
摘要:
具体问题如下图 先看一下4*4的回溯过程 程序结束条件: 一组解:设标志,找到一解后更改标志,以标志做为结束循环的条件。 所有解:k=0 判断约束函数判断第k个后能不能放在x[k]处 两个皇后不能放在统一斜线上: 若2个皇后放置的位置分别是(i,j)和(k,l), 且 i-j = k -l 或 i+ 阅读全文
摘要:
初始条件如下 看下面的动图了解回溯的过程 对应的解空间和约束条件和状态树如下 设当前有N个物品,容量为M; 这些物品要么选,要么不选,我们假设选的第一个物品编号为i(1~i-1号物品不选),问题又可以转化为有N-I个物品(即第I+1~N号物品),容量为M-Wi的子问题……如此反复下去,然后在所有可行 阅读全文
摘要:
参考:https://blog.csdn.net/changjiale110/article/details/79489884 !首先我们得知道概念: 前序遍历:先访问当前节点,再访问当前节点的左子树,最后访问当前节点的右子树。对于二叉树,深度遍历与此同。规律:根在前;子树在根后且左子树比右子树靠前 阅读全文
摘要:
1)问题引导 一个demo 从上面我们可以知道不同的结合方式,矩阵计算的次序数不一样,那么如何求这个最小次序数的划分,即如何结合。这就是矩阵连乘问题 使用动态规划可以解决 如下图,如果我们使用递归,则会产生大量的重复计算,复杂度太高,当然使用备忘录降低复杂度。不过更好的是使用递推 递推算法分析如下: 阅读全文
摘要:
具体问题的描绘和分析如下 从上图可知,要构造两个二维数组,数组L用来求各种取值的子最长公共子序列,则最后一个元素就是最长公共子序列的长度,从右边的二维表,数值为1,则就是公共的元素,我们用数组记录下来, 代码如下: 运行结果如下: 阅读全文
摘要:
原问题是给出各个节点和各个节点的被查找概率,然后构造一棵各个节点平均被查找比较次数最小的树,则该问题可以用动态规划来解决 示例如下 推广到一般的情况,并设T(i, j)是由记录{ri, …, rj}(1≤i≤j≤n)构成的二叉查找树,C(i, j)是这棵二叉查找树的平均比较次数,有下列分析 观察这个 阅读全文
摘要:
开心的小明 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描述 小明今天很开心,家里购置的新房就要领钥匙了,新房里有一间他自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过N 元钱就行”。今天一早小明就开始做预算, 阅读全文
摘要:
这是一个典型的0-1背包问题,工人总数可以看为背包的容量,金矿的个数可以看为物品的个数,金矿的含金量可以看作物品的价值,金矿的使用工人数可以看作物品所占空间数,这样一来就变成了0-1背包问题,关于0-1背包问题的解法可以看我这篇博客https://www.cnblogs.com/henuliulei 阅读全文
摘要:
普通背包问题可以用贪心来解决,而0-1背包问题只能靠动态规划来做,而且在我们平时的做题中经常会遇到0-1背包问题的变形,所以有必要牢牢掌握0-1背包问题的思想和解题思路。 根据下面的图更可以找到应该选那些背包 下面是我根据此思路模拟的代码 运行结果如下 总结:(1)很多0-1背包问题完全可以套此模板 阅读全文