过桥问题:黑夜,只有一只手电筒
A过桥需要1s
B过桥需要3s
C过桥需要5s
D过桥需要8s
E过桥需要12s
求最小过桥时间贪心算法:从最大的开始过去,最小的两个做为辅助。假如左岸人数为2:两个人直接过去,不需要回来,代价假如左岸人数为3:由辅助,代价假如左岸人数大于3:将左岸最大两个人送到右岸,可以有两种方案: image.png综上,此时tips: 记得每次j-2。代码如下:package my;import java.util.Arrays;
import java.util.Scann...
贪心算法解决会场安排问题。
【问题描述】
假设要在足够多的会场里安排一批活动,并希望使用尽可能少的会场。(这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点,不相容活动间用边相连。使相邻顶点有不同颜色的最小着色数,相应于要找的最小会场数。)【数据输入】由文件input.txt给出输入数据,第一行又一个正整数K,表示有K个待安排的活动。接下来有K行数据,每行有两个正整数,分别表示K个待安排的活动的开始...
function makeChange(origAmt, coins) {//贪心算法——找零问题var remainAmt ;if (origAmt % .25 < origAmt) {coins[3] = parseInt(origAmt / .25);remainAmt = origAmt % .25;origAmt = remainAmt;}if (origAmt % .1 < origAmt) {coins[2] = parseInt(origAmt / .1);remainAmt = origAmt % .1;origAmt = remainAmt;}if (origAmt % .05 < origAmt) {coins[1] = parseInt(origAmt / .05);remainAmt = origAmt % .05;origAmt = rema...
这个问题是之前考研复试老师问的一个问题,当时答得还不错。今天刷题后记录一下。贪心算法:基本思想:贪心算法并不从整体最优上加以考虑,它所做的选择只是在某种意义上的局部最优解。基本要素:最优子结构性质和贪心选择性质。动态规划:基本思想:将待求解的问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。基本要素:最优子结构性质和重叠子问题性质贪心算法与动态规划的区别:共同点:两者都具有...
# 1.一个数分成几份,可以被 3 整除的最大份数。比如 12345 分成12 3 45 结果为3.# 思路:贪心算法# string=""# m=0# n = input()# for i in range(len(n)):# if int(n[i])%3==0:# m+=1# continue# string+=n[i]# if int(string)%3==0:# m+=1# string=""# print(m)原文:https://www.cnblogs.com/huhuxixi/p/10279579.html
Java 算法(一)贪心算法数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html)一、贪心算法什么是贪心算法?是指在对问题进行求解时,总是做出当前看来是最好的选择。也就是说,不从整体最优上加以考虑,所得出的结果仅仅是某种意义上的局部最优解。 因此贪心算法不会对所有问题都能得到整体最优解,但对于很多问题能产生整体最优解或整体最优解的近似解。贪心算法的构成部分:候选对象集合 :候选添加进解的对...
738. 单调递增的数字给定一个非负整数 N,找出小于或等于 N 的最大的整数,同时这个整数需要满足其各个位数上的数字是单调递增。(当且仅当每个相邻位数上的数字 x 和 y 满足 x <= y 时,我们称这个整数是单调递增的。)输入: N = 10
输出: 9输入: N = 1234
输出: 1234输入: N = 332
输出: 299
思路局部最优:遇到strNum[i - 1] > strNum[i]的情况,让strNum[i - 1]--,然后strNum[i]给为9,可以保证这两位变成最大单调递增整数。全...
1 Runnable接口Runnable 接口应该由那些打算通过某一线程执行其实例的类来实现。设计该接口的目的是为希望在活动时执行代码的对象提供一个公共协议。激活的意思是说某个线程已启动并且尚未停止。在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口。实际上,Thread实现了Runnable接口。2 贪心算法贪心算法把问题分解为几个有顺序的子问题,逐一对子问题进行求解,每一步都是在已求解子问题的基础上求取最...
贪心算法1. 算法介绍贪心算法是指在可对问题进行求解时,在每一步中采用最好或者最优的选择,从而导致结果最好的算法贪心算法得到的结果不一定是最优的结果,但是都是相对近似最优解的结果2. 实际问题广播台覆盖地区k1“北京”,“上海”,“天津”k2“广州”,“北京”,“深圳”k3“成都”,“上海”,“杭州”k4k5”杭州“,”大连“假设存在以上电视台,以及覆盖区域,如何选择最少的电视台让所有地区都能接收到信号3. 算法思路...
代码:#include<iostream>using namespace std;int main(){ int n,s,t1[100],t2[100],i,t,j; while(cin>>n) { if(n==0) break; s=1; for(i=0;i<n;i++) cin>>t1[i]>>t2[i]; for(i=0;i<n;i++) for(j=i+1;j<n;j++) { if(t2[i]>t2[j]) { ...
【问题描述】恶魔猎手尤迪安野心勃勃.他背叛了暗夜精灵,率深藏在海底的那加企图叛变:守望者在与尤迪安的交锋中遭遇了围杀.被困在一个荒芜的大岛上。为了杀死守望者,尤迪安开始对这个荒岛施咒,这座岛很快就会沉下去,到那时,岛上的所有人都会遇难:守望者的跑步速度,为17m/s,以这样的速度是无法逃离荒岛的。庆幸的是守望者拥有闪烁法术,可在1s内移动60m,不过每次使用闪烁法术都会消耗魔法值10点。守望者的魔法值恢复的速度...
可用贪心算法解决的几个基本问题分类: 算法2011-08-24 12:36 950人阅读 评论(0) 收藏 举报算法活动作业c关键:看问题有没有贪心选择性质和最优子结构性质。有些问题看似是可以用贪心算法,但是实际用贪心算法却得不到最优解。构造贪心算法后,需要一定的证明来确定它的正确性。常用证明方法:反证法、调整法。几个基本问题:1. 活动安排问题。设有n个活动的集合e={1,2,…,n},其中每个活动都要求使用同一资源,如演讲会场等,而...
背包问题时间限制:3000 ms | 内存限制:65535 KB
难度:3描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<=10);如果给你一个背包它能容纳的重量为m(10<=m<=20),你所要做的就是把物品装到背包里,使背包里的物品的价值总和最大。
输入第一行输入一个正整数n(1<=n<=5),表示有n组测试数据;
随后有n测试数据,每组测试数据的第一行有两个正整数s,m(1<=s<=10);s表示有s个...
DP:1.codevs 1493 糖果 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description最近小修很高兴,因为她的k个外甥就要来她家里玩了。她上超市买了一大堆糖果,总共有n颗。小修准备把所有的糖果分成k堆(当然每一堆至少要有一颗糖果)。可是到底有多少种分法呢?她冥思苦想不得其解,你能帮助她吗?输入描述 Input Description两个用空格分开的整数n, k(n<=60000, k<=100)。输出描述 Output Description仅一...
贪心算法介绍: 对问题求解时,总是做出在当前看来最好的选择 基本思路: 建立数学模型来描述问题 把求解的问题分成若干个子问题 对每一个子问题求解,得到子问题的局部最优解 把子问题的解局部最优解合成原来解问题的一个解 贪心策略适用的前提:局部足有策略能导致产生全局最优解。 贪心算法与动态规划算法的主要区别: 动态规划算法通常是自底向上的方式求解子问题,而贪心算法...