动态规划_leetcode312解题报告

#coding=utf-8

#              leetcode 312 解题报告 20190307 找工作期间#解题思路# 假设初始气球的状态是 [3,1,5,8]

#、顺向思维# 第一步有四个选择:3,1,5,8 ,# 第二步有三个选择:……   o(n!)# 每一步后 原问题的规模是减少了 ,但是数据的同质性却破坏了:#        因为原问题的数组是连续的,子问题的数组不是连续的 这破坏了数据同质性的原则。

##         所以后面的思路就是 将不连续的数组 转换为连续的数组,这样子问题和原问题#         数据结构同质,且数据规模-1,同时其解空间树上有子问题重叠#         可以用记忆化递归方式解决,用字典存储状态,字典指是数据的排列状态

#数据规模递增的思想:# [8] -> [5,8] ->[1,5,8] -> [3,1,5,8]#  因为子问题与原问题不是同质的,原问题不能利用子问题的最优解,思路限于僵局了。

# "终局思想"# 从解空间树上向上递推 : 关键是状态如何定义 : "生长学习法"# 是怎么想到用[i][j] 定义状态的呢?# 怎么定义[][]8 []58 …… 这样的状态呢 ?# 怎么定义[][]a []ab …… 这样的状态呢?

# 当只有一个值时, []x[] [][]x  的不同在于 数组的很坐标不同  可以用 s1(i) 表示状态# []xx 与 xx[] 和 x[]x 又要如何表示状态呢?s1([l1,r2],[l2,r2],……) 来表示状态# 重要的一点是 s2的状态 可以  通过 s1 线性 叠加得到 : 满足状态的递推性。# 即 value(s1)  -> value(s2) ->  value(sn)

# 原问题得解 :1)记忆化递归#            2) 动态规划

#        1              5                  8#      []58           1[]8                15[]#  [][]8 []5[]    [][]8 1[][]         []5[] 1[][]

原文地址:https://www.cnblogs.com/lux-ace/p/10546611.html

时间: 2024-11-07 20:38:22

动态规划_leetcode312解题报告的相关文章

2018年暑假ACM个人训练题9(动态规划)解题报告

A:m段最大字段和问题 https://www.cnblogs.com/yinbiao/p/9314528.html B:map的使用(根本就不是dp!!!) https://www.cnblogs.com/yinbiao/p/9314605.html C:裸LIS问题 https://www.cnblogs.com/yinbiao/p/9150889.html D:状态压缩dp(还没有弄清楚) ..... E:裸LIS问题 https://www.cnblogs.com/yinbiao/p/9

动态规划专题 - 解题报告

https://acm.uestc.edu.cn/contest/15/summary/?tdsourcetag=s_pctim_aiomsg A状压DP, 注意要开long long #include<bits/stdc++.h> using namespace std; #define ll long long ll dp[1<<18][18]; ll e[20][20]; ll x[20],y[20]; const ll INF=1e18; int main() { int

动态规划_leetcode312

#coding=utf-8 # 递归class Solution1(object): def maxCoins(self, nums): """ :type nums: List[int] :rtype: int """ self.res = 0 if not nums: return self.res self.res = self.getMaxValue(nums) print self.res return self.res def get

【解题报告】[动态规划] - PID90 / 未出现的子串

原题地址:http://www.rqnoj.cn/problem/90 解题思路:题目看起来不太像动态规划... 我用一个数组f[i][j]来表示在数组第i个元素的后面第一次出现j的位置,为-1则是没出现过. 然后每次查找最大的位置即可.如题目例子中: f   1  3  5  2  4  1  3  5  2  2  2  2  3  4  1  5  3  2----------------------------------------------------------- 1  1  6

【解题报告】[动态规划]RQNOJ PID2 / 开心的金明

原题地址:http://www.rqnoj.cn/problem/2 解题思路:背包问题. 状态转移方程:DP[i][j]=max(DP[i-v[j]][j-1]+p[j]*v[j],DP[i][j-1]) DP[i][j]表示最多话费i的钱,购买前j+1个物品所能达到的最大价值. 解题代码: 1 #include<stdio.h> 2 #include<iostream> 3 #include<algorithm> 4 using namespace std; 5 i

leetCode解题报告5道题(九)

题目一:Combinations Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. For example,If n = 4 and k = 2, a solution is: [ [2,4], [3,4], [2,3], [1,2], [1,3], [1,4], ] 分析: 题意给我们一个数字n, 和一个数字k,让我们求出从 1~~n中取出k个数所能得到的组合数 所

leetCode解题报告5道题(八)

题目一: Populating Next Right Pointers in Each Node Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *next; } Populate each next pointer to point to its next right node. If there is no next right node, the

poj分类解题报告索引

图论 图论解题报告索引 DFS poj1321 - 棋盘问题 poj1416 - Shredding Company poj2676 - Sudoku poj2488 - A Knight's Journey poj1724 - ROADS(邻接表+DFS) BFS poj3278 - Catch That Cow(空间BFS) poj2251 - Dungeon Master(空间BFS) poj3414 - Pots poj1915 - Knight Moves poj3126 - Prim

NOIP 2006 解题报告

第一题: 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定等于后一颗珠子的头标记.因为只有这样,通过吸盘(吸盘是Mars人吸收能量的一种器官)的作用,这两颗珠子才能聚合成一颗珠子,同时释放出可以被吸盘吸收的能量.如果前一颗能量珠的头标记为m,尾标记为r,后一颗能量珠的头标记为r,尾标记为n,则聚合后释放的能量为(Mars单位),新产生的珠子的头标记为m,尾