算法
demo易
带你玩转编程世界,一起学习,一起进步。
展开
-
用java实现银行家算法
银行家算法核心是 先寻找满足系统当前剩余的资源量(avaliable )>=进程运行所需的资源数的进程(need),再假设这个进程安全校验是成功的,当这个进程运行完毕后,释放资源后,现在系统当前剩余的资源(avaliable)=avaliable+该线程之前已分配的资源(allocation) ,将该节点进程设为处理时忽略进程,再以上条件为前提进行安全校验。最后不断重复此步骤直到找出安全的执行序列原创 2017-07-17 15:00:45 · 7570 阅读 · 1 评论 -
动态规划之换零钱
问题描述:如果我们有面值为1元、3元和5元的硬币若干枚,如何用最少的硬币凑够11元? 有人会说这太简单,对是太简单,但请你用动态规划解,将问题进行抽象,最后达到什么程度了,给出任意面值集合V,凑够的面值为m,求所需硬币最少的个数 j. 这是动态规划的入门题。 首先先介绍一下什么是动态规划: 动态规划算法通常基于一个递推公式及一个或多个初始状态。 当前子问题的解将由上一次子问题原创 2017-08-21 19:45:15 · 4038 阅读 · 2 评论 -
阿里巴巴测验题猴子摘桃问题(LIS问题)
问题描述:小猴子下山,沿着下山的路由一排桃树,每棵树都结了一些桃子。小猴子想摘桃子,但是有一些条件需要遵守,小猴子只能沿着下山的方向走,不能回头,每棵树最多摘一个,而且一旦摘了一棵树的桃子,就不能再摘比这棵树结的桃子少的树上的桃子了,那么小猴子最多能摘几个桃子呢?举例说明,比如有5课树,分别结了10,4,5,12,8颗桃子,那么小猴子最多能摘3颗桃子,来自于结了4,5,8或者4,5,12颗桃子的树。原创 2017-08-21 22:37:00 · 2131 阅读 · 0 评论 -
搜狗笔试题~求圆上的点最多可以组成多少个钝角三角形
题目好像是这样的给出一组数据点,这些点都在圆上,给出每个点的距离正北方向的角度,角度为顺时针递增,求圆上的点最多可以组成多少个钝角三角形,下面看一下输入样例。 第一行 x 表示有 多少个点 第2行到n行为每个点到正北方向的角度。 输出 y 表示有最多有y 个钝角三角形 输入样例 4 0 180 179 45 输出样例 2 解题思路,由于根据数学知识可知圆上的点与直径组成的三角原创 2017-10-17 11:55:41 · 1268 阅读 · 0 评论 -
排列组合问题
public class Main { static int num=0; public static void swap(char[] arr,int i,int j){ char temp; temp=arr[i]; arr[i]=arr[j]; arr[j]=temp; } public st...原创 2018-05-04 22:40:15 · 179 阅读 · 0 评论