
动态规划
动态规划
Αиcíеиτеǎг
柯南
展开
-
LeetCode-买卖股票的最佳时机II
这道题的思路是这样的,使用贪心算法求最优解简单来说就是,如果,今天买了股票价格较低,第二天高,那么就可以赚到钱,也就是我今天就可以买,然后明天就卖。如果第二天价格低,那么我们今天就不买它了,这样第二天也不卖(这样不会亏本呀)。如此下去,等到了最后,每次买卖,都是赚的,蚊子再小也是肉,就成为最优解啦。贪心算法思想就是求最优解的最佳思路。虽然会出现那种,我后天可能卖的价更高,但是但是,全局最优解...原创 2020-01-16 22:27:25 · 173 阅读 · 0 评论 -
剑指offer(九)变态跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。思路:因为n级台阶,第一步有n种跳法:跳1级、跳2级、到跳n级跳1级,剩下n-1级,则剩下跳法是f(n-1)跳2级,剩下n-2级,则剩下跳法是f(n-2)所以f(n)=f(n-1)+f(n-2)+…+f(1)因为f(n-1)=f(n-2)+f(n-3)+…+f(1)...原创 2020-02-09 14:40:17 · 138 阅读 · 0 评论 -
剑指offer(八)跳台阶
题目描述一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。number等于1时,1种跳法number等于2时,2种跳法number等于3时,3种跳法number等于4时,5种跳法即斐波那契数列公式为f(n) = f(n - 1) + f(n - 2);但是用递归不太好直接用循环即可。class Solution...原创 2020-02-09 14:09:34 · 149 阅读 · 0 评论 -
批处理作业调用
批处理作业调用,第一行n ,n小于等于15,n行每行两个整数,输出最有调度序列。一行输出,空格分割,最后加空格,总时长。/*嗯,时间紧迫,生怕下次来补充的时候,自己都看不懂代码所以还是简单介绍下。x,bestx,m分别代表的是当前作业调度————其中一种排列顺序,当前最优作业调度,各作业所需的处理时间。f1,f2,cf分别代表机器1完成处理时间,机器2完成处理时间,完成时间和*/#incl...原创 2018-12-05 00:05:48 · 908 阅读 · 0 评论 -
蓝桥杯练习系统-瓷砖铺放
算法训练 瓷砖铺放 时间限制:1.0s 内存限制:512.0MB问题描述 有一长度为N(1<=N<=10)的地板,给定两种不同瓷砖:一种长度为1,另一种长度为2,数目不限。要将这个长度为N的地板铺满,一共有多少种不同的铺法? 例如,长度为4的地面一共有如下5种铺法: 4=1+1+1+1 4=2+1+1 4=1+2+1 4=1+1+2 ...原创 2018-02-12 14:39:11 · 552 阅读 · 0 评论 -
蓝桥杯练习系统-未名湖边的烦恼
算法训练 未名湖边的烦恼 时间限制:1.0s 内存限制:256.0MB问题描述 每年冬天,北大未名湖上都是滑冰的好地方。北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰鞋都不剩。 每天早上,租鞋窗口都会排起长龙,假设有还鞋的m个,有需要租鞋的n个。现在的问题是,这些人有多少种排法,可以避免出现体育组没有冰鞋可租的尴尬场面。(两个同样需求的人(比如都是租鞋或都...原创 2018-02-12 13:04:09 · 437 阅读 · 0 评论 -
蛮力法和分治法求最近对
//蛮力法#include<iostream>#include<math.h>#include<time.h>#include<stdlib.h>using namespace std;struct P{ int x; int y;};double ClosePoints(int原创 2018-11-07 16:31:19 · 1114 阅读 · 0 评论 -
买不到的数目
/*题目描述: 小明开了一家糖果店。他别出心裁:把水果糖包成4颗一包和7颗一包的两种。糖果不能拆包卖。小朋友来买糖的时候,他就用这两种包装来组合。当然有些糖果数目是无法组合出来的,比如要买 10 颗糖。你可以用计算机测试一下,在这种包装情况下,最大不能买到的数量是17。大于17的任何数字都可以用4和7组合出来。本题的要求就是在已知两个包装的数量时,求最大不能组合出的数字。输入:...原创 2018-03-25 09:32:31 · 2897 阅读 · 3 评论 -
天平问题:砝码10 20 50 100 500若干, 第一行输入5种砝码的个数(0≤每种砝码的个数≤10),输出可以称多少种重量的物品,0不算
多重背包问题/*天平问题:砝码10 20 50 100 500若干, 第一行输入5种砝码的个数(0≤每种砝码的个数≤10),输出可以称多少种重量的物品,0不算*/#include<cstdio>#define maxn 1000using namespace std;int s[5],v[5]={10,20,50,100,500};bool f[maxn+10...原创 2018-11-07 16:11:32 · 522 阅读 · 0 评论 -
背包问题
输入n空格c n为物品个数,c为背包容量,n行,每行两个整数,一个是物品重量,一个是物品价值,输出背包能够得到的最大价值#include <iostream>#include <string.h>#define max(a,b) a>b?a:bint dp[100010];int main(){ int n,m,v;//m数目,v背包容量 ...原创 2018-12-05 00:15:24 · 176 阅读 · 0 评论 -
动态规划典型例题详解(最长公共子序列(POJ1458), Help Jimmy(POJ1661))
例题1:最长公共子序列(POJ1458) 给出两个字符串,求出这样的一 个最长的公共子序列的长度:子序列 中的每个字符都能在两个原串中找到, 而且每个字符的先后顺序和原串中的 先后顺序一致。 输入 abcfbc abfcab programming contest abcd mnp 输出 4 2 0解题思路: 遇见动归问题,第一步需要考虑状态是什么。 输入两个串s1原创 2018-01-27 12:12:30 · 674 阅读 · 0 评论 -
求最大字段和/最长递增子序列长度-利用动态规划
其实最近代码敲的少了,杂七杂八的事情太多了。太罪恶了。总之,等期末考试之后,又得把算法提上日程了。求最大子段和,动态规划法,元素:第一行一个n,n是整数,小于等于5000(本程序设置为10000吧),后面n行,每行一个整数,求最大子段和。#include<iostream>using namespace std;const int MAXN=10005;int dp[MA...原创 2018-12-03 22:34:44 · 412 阅读 · 0 评论 -
n个正整数均分两组,使两组整数的和的差的绝对值最小
#include <iostream>#include <cstdio>#include <cstring>#include <algorithm>using namespace std;const int M = 100 + 20;int w[M];int dp[M*100];//动态规划bool原创 2018-11-07 15:58:56 · 5812 阅读 · 2 评论 -
蓝桥杯练习系统-乘积最大(暴力法||DP)
算法训练 乘积最大 时间限制:1.0s 内存限制:256.0MB锦囊1 动态规划。 问题描述 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年。在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸得以参加。活动中,主持人给所有参加活动的选手出了这样一道题目: 设有一个长度为N的数字...原创 2018-02-25 19:55:57 · 551 阅读 · 0 评论 -
动态规划最大子数组和例题详解
静态的算法,比如说冒泡排序,我们可以很简单的知道它就是两个循环进行遍历,从i = 1 到 i = 2 ,以此类推的,思路可以很清晰,可以很直观的得出来最终结果。 然而在动归中,我们无法轻松的根据知道i的值来判断最大值是怎么得到的,因为他与i的值没有直接的关联,是每一步都建立在上一步求出来的结果上,再进一步扩大范围并融入上一步的结果。 静态是把所有的情况列出来,然后找出最优解,但是动态是分析的每...原创 2018-02-27 20:49:39 · 6899 阅读 · 0 评论 -
动态规划详解(数字三角形POJ1163)
7 3 8 8 1 0 2 7 4 44 5 2 6 5在上面的数字三角形中寻找一条从顶部到底边的路径,使得 路径上所经过的数字之和最大。路径上的每一步都只能往左下...原创 2018-01-26 11:17:21 · 12104 阅读 · 0 评论