动态规划
DP
tianxin0919
Algorithm & SDEer
展开
-
LC5627 石子游戏VII
区间DP+博弈论题目描述:石子游戏中,爱丽丝和鲍勃轮流进行自己的回合,爱丽丝先开始 。有 n 块石子排成一排。每个玩家的回合中,可以从行中 移除 最左边的石头或最右边的石头,并获得与该行中剩余石头值之 和 相等的得分。当没有石头可移除时,得分较高者获胜。鲍勃发现他总是输掉游戏(可怜的鲍勃,他总是输),所以他决定尽力 减小得分的差值 。爱丽丝的目标是最大限度地 扩大得分的差值 。给你一个整数数组stones ,其中 stones[i] 表示 从左边开始 的第 i 个石头的值,如果爱丽丝和.原创 2020-12-13 20:53:58 · 140 阅读 · 0 评论 -
区间DP--LeetCode5498石子游戏
题目描述:几块石子 排成一行 ,每块石子都有一个关联值,关联值为整数,由数组 stoneValue 给出。游戏中的每一轮:Alice 会将这行石子分成两个 非空行(即,左侧行和右侧行);Bob 负责计算每一行的值,即此行中所有石子的值的总和。Bob 会丢弃值最大的行,Alice 的得分为剩下那行的值(每轮累加)。如果两行的值相等,Bob 让 Alice 决定丢弃哪一行。下一轮从剩下的那一行开始。只 剩下一块石子 时,游戏结束。Alice 的分数最初为 0 。返回 Alice 能够获得的最大分数 。原创 2020-08-23 15:37:26 · 182 阅读 · 0 评论 -
最长上升子序列
题目描述给定一个无序的整数数组,找到其中最长上升子序列的长度样例输入:[10,9,2,5,3,7,101,18]输出:[2,5,7,101],最长上升子序列的长度是4,其中,最长上升子序列可能存在多个1.暴力枚举 private static int max; public static void main(String[] args) { int[] a = {10,9,2,5,3,7,101,18}; System.out.println(leng原创 2020-06-15 21:13:25 · 93 阅读 · 0 评论 -
LeetCode279完全平方数(暴搜dfs+记忆化dfs+动态规划+BFS)四种解法
暴搜dfsclass Solution { public int numSquares(int n) { return dfs(n); } public int dfs(int n){ int val = (int)Math.sqrt(n); if(val*val == n){ return 1;...原创 2020-04-17 19:03:38 · 153 阅读 · 0 评论 -
LeetCode494
给定一个非负整数数组,a1, a2, …, an, 和一个目标数,S现在你有两个符号 + 和 -。对于数组中的任意一个整数,你都可以从 + 或 -中选择一个符号添加在前面。返回可以使最终数组和为目标数 S 的所有添加符号的方法数。方法1:暴力法方法2:动态规划DP//方法1 public static int findTargetSumWays(int[] nums,int S)...原创 2020-02-06 23:02:34 · 71 阅读 · 0 评论