自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(154)
  • 收藏
  • 关注

原创 刷代码随想录有感(133):单调栈——每日温度--右边第一个更大的数出现在几天后

通常是一维数组,要寻找任一个元素的右边或者左边第一个比自己大或者小的元素的位置,此时我们就要想到可以用单调栈了。如果求一个元素右边第一个更大元素,单调栈就是递增的,如果求一个元素右边第一个更小元素,单调栈就是递减的。

2024-07-12 23:44:36 180

原创 刷代码随想录有感(132):动态规划——最长回文子序列

如果s[i]与s[j]不相同,说明s[i]和s[j]的同时加入 并不能增加[i,j]区间回文子序列的长度,那么分别加入s[i]、s[j]看看哪一个可以组成最长的回文子序列。首先要考虑当i 和j 相同的情况,从递推公式:dp[i][j] = dp[i + 1][j - 1] + 2;2.递推公式:如果s[i]与s[j]相同,那么dp[i][j] = dp[i + 1][j - 1] + 2;所以需要手动初始化一下,当i与j相同,那么dp[i][j]一定是等于1的,即:一个字符的回文子序列长度就是1。

2024-07-11 22:11:05 201

原创 刷代码随想录有感(131):动态规划——回文子串

我们在判断字符串S是否是回文,那么如果我们知道 s[1],s[2],s[3] 这个子串是回文的,那么只需要比较 s[0]和s[4]这两个元素是否相同,如果相同的话,这个字符串s 就是回文串。

2024-07-10 20:11:40 314

原创 刷代码随想录有感(130):动态规划——编辑距离

时刻需要清楚dp[i][j]的定义

2024-07-09 19:00:40 263

原创 刷代码随想录有感(129):动态规划——两个字符串的删除操作

思路:将两个字符串除公共最长子序列以外的所有字符删除,所以问题便转换成了找出公共最长子序列,删除操作的步数即为两个字符串长度总和减去2 * 最长公共子序列长度。

2024-07-08 17:40:35 137

原创 刷代码随想录有感(128):动态规划——不同的子序列

一部分是用s[i - 1]来匹配,那么个数为dp[i - 1][j - 1]。即不需要考虑当前s子串和t子串的最后一位字母,所以只需要 dp[i-1][j-1]。一部分是不用s[i - 1]来匹配,个数为dp[i - 1][j]。

2024-07-07 19:56:01 320

原创 刷代码随想录有感(127):动态规划——判断是否为子序列

判断s是否为t的子序列,实质上就是看s与t的最长公共子序列是否为s。

2024-07-06 22:39:42 199

原创 刷代码随想录有感(126):动态规划——不相交的线

本题说是求绘制的最大连线数,其实就是求两个字符串的最长公共子序列的长度!

2024-07-05 15:47:52 203

原创 刷代码随想录有感(125):动态规划——最长公共子序列

递推公式:如果相同,则后一个为前一个长度加一;如果不相同(如图c不等于e),情况一:考虑c不考虑e,则变成abc与ac的最长公共子序列,此时为dp[i][j-1]; 情况二:考虑e不考虑c,则变成ace与ab的最长公共子序列,此时为dp[i-1][j]。综上最后dp[i][j]取他们当中最大的一个。

2024-07-04 18:05:32 226

原创 刷代码随想录有感(124):动态规划——最长重复子数组

定义:dp[i][j] :以下标i - 1为结尾的A,和以下标j - 1为结尾的B,最长重复子数组长度为dp[i][j]

2024-07-03 13:39:27 225

原创 刷代码随想录有感(123):动态规划——最长连续递增子序列

dp[i]定义为以i结尾的最长连续子序列,如果nums[i] > nums[i - 1]则说明递增,dp[i]一定是dp[i - 1] + 1,最后把最长的那个输出即可(不同结尾长度不同,不一定是最后一个最长)。

2024-07-02 13:06:16 238

原创 麻了个把子的,Ue给我崩了,暂时不整了,用纯c++干吧...

可恶啊啊啊啊!

2024-07-01 22:16:40 119

原创 UE5(c++)开发日志(3):将前面写的输出日志的方法进行封装

选择无属性,因为不需要添加任何东西进去, 也不需要借助里面任何东西。

2024-07-01 22:00:49 305

原创 刷代码随想录有感(122):动态规划——最长子序列

dp[i]表示i之前包括i的以nums[i]结尾的最长递增子序列的长度不是要dp[i] 与 dp[j] + 1进行比较,而是我们要取dp[j] + 1的最大值,即:dp[i]为dp[j]+1的最大值,递推体现在由dp[j]+1推出dp[i]。

2024-07-01 17:36:25 142

原创 UE5(c++)开发日志(2):向日志和屏幕输出信息/将C++类变为蓝图类

通过UE_LOG()向日志输出通过GEngine->AddOnScreenDebugMessage()向窗口输出

2024-06-30 14:37:57 658

原创 刷代码随想录有感(121):贪心算法——买卖股票的最佳时机III

更新buy2为当前价格减去sell1和之前的buy2中的较小值,表示在当前价格下第二次买入股票时的最低花费, 通过不断更新,我们可以确保在第二次买入时不会支付比第一次卖出后更高的价格,从而避免亏损

2024-06-30 13:09:54 207

原创 UE5(c++)demo开发日志(1):Actor类添加

工具---新建c++类---选用Actor,创造出头文件(.h,用于声明变量、函数、重写父类函数等)和源文件(.cpp,涉及到具体功能实现),客户端界面成功显示出来新建类

2024-06-29 23:01:49 345

原创 刷代码随想录有感(120):贪心算法——买卖股票的最佳时机

贪心思路:在左边找一个最小值,通过遍历价格列表,不断更新遇到的最低价格,并计算当前价格与最低价格的差值,如果这个差值大于之前记录的最大利润,则更新最大利润。

2024-06-29 20:22:47 147

原创 刷代码随想录有感(119):动态规划——打家劫舍III(树形dp)

使用一个长度为2的数组,记录当前节点偷与不偷所得到的的最大金钱。递归顺序采用后序,即左-右-中,从下往上推。

2024-06-27 20:08:45 165

原创 刷代码随想录有感(118):动态规划——打家劫舍II

现在连成环导致首尾都要考虑了,考虑第一个则不考虑最后一个,考虑最后一个则不考虑第一个。所以要限制起始位置和终止位置,其余的都是之前的模板。

2024-06-26 11:12:13 251

原创 刷代码随想录有感(117):动态规划——打家劫舍(你需要...“考虑”一下?)

思路:当前房屋偷与不偷取决于 前一个房屋和隔两个房屋的那个是否被偷了。发现当前状态和前面状态会有一种依赖关系,那么这种依赖关系都是动规的递推公式。

2024-06-25 22:03:16 307

原创 刷代码随想录有感(116):动态规划——单词拆分

很奇怪,这次遍历物品竟然没有到头,而是限制在j长度以内。而且递推公式也不是常规:if(set.find(tmp) != set.end() && dp[i] == true)dp[j]=true

2024-06-24 22:38:04 311

原创 刷代码随想录有感(115):动态规划——完全平方数

跟昨天的一样,不过一个细节是i从1开始并且用i * i

2024-06-24 10:32:44 243

原创 刷代码随想录有感(114):动态规划——最少数量的零钱换整

既然求最小的,那初始值为INT_MAX;递推公式疑虑:①dp[j] = max(dp[j], dp[j - weight[i]] + value[i])求的是容量为j的背包所装最大价值;②dp[j] = min(dp[j], dp[j-weight[i]] + 1)求的是装满所需最小量;③dp[j] += dp[j - weight[i]]表示满足条件的数量

2024-06-23 17:05:38 180

原创 刷代码随想录有感(113):动态规划——爬楼梯plus

跟组合总和IV一样是求排列,比如上3个台阶先1后2和先2后1是不一样的。

2024-06-22 19:52:16 255

原创 刷代码随想录有感(112):动态规划——组合总和IV

这题跟零钱凑整有很大不同!!!零钱凑整是组合,这题是排序!题干明确说了“顺序不同的序列视为不同的组合”。所以这题的遍历顺序要变,得先背包再物品, 所以j只能初始化为0了,>=weight[i]只能放到if里面了。

2024-06-22 10:57:33 246

原创 刷代码随想录有感(111):动态规划——零钱兑换II

注意题干,到底是求能装最大价值的方案还是装满这个容量共有多少种方法。两种递推公式不同!!!

2024-06-21 22:38:43 228

原创 刷代码随想录有感(110):动态规划——完全背包问题

最大的不同就是遍历背包时,是从前向后遍历的。

2024-06-21 00:03:47 192

原创 无引擎游戏开发(3):数据结构设计|功能函数完善

现在回到“读取操作”部分,通过msg的x与y字段来获取鼠标点击的位置,但是现在需要将鼠标点击的位置映射到数组的索引中,一开始将数组初始化为600*600,九等分后每个格子都是200*200,单看水平方向的二维数组索引便是鼠标点击位置除以200的整数部分,竖直方向一样。这里使用了_stprintf_s这个字符串格式化函数,并且定义了TCHAR的字符数组作为格式化的缓冲区,这与printf和sprintf很像,只不过是为了在更通用的编码环境下使用。为了简单起见,我们将棋盘的二维数组定义为全局变量。

2024-06-20 14:04:19 680

原创 刷代码随想录有感(109):动态规划——01背包问题|一和零

将m, n视为背包的属性,故问题转化为了将m,n容量的背包转满最多能装多少个,而每样物品只能装一次,问题转化成了01背包问题。实际上是三维数组,只不过背包有两个属性而已,用类似是一维数组方法写。

2024-06-20 09:44:35 216

原创 无引擎游戏开发(2):最简游戏框架 | EasyX制作井字棋小游戏I

定义DrawPiece函数绘制棋子。小球在"画布“上移动的过程就是我们在调用绘图函数,这个”画布“就是渲染缓冲区,先绘制的内容可能被后面绘制的内容覆盖掉,所以调用cleardevice()函数,相当于用当前背景颜色覆盖画布实现”清屏“。小球”闪烁“的原因在于,绘制过程并不是一瞬间,而是”逐渐“发生的,先前绘制的小球被不断清除,而人眼同时观察到”绘制“与”清除“,所以有种”闪烁“的感觉。“,在主循环中不断读取玩家鼠标操作并将这些操作翻译成对数据的处理逻辑,最后再根据现有的逻辑将画面内容绘制出来。

2024-06-19 23:55:56 1542

原创 刷代码随想录有感(108):动态规划——目标和

递推公式:dp[j] += dp[j - nums[i]]

2024-06-19 14:06:32 171

原创 无引擎游戏开发(1):EasyX图形库引入 + 跟随鼠标移动的小球

来自bilibili up主的的视频教程:【从零开始的C++游戏开发】

2024-06-19 00:22:23 1787 1

原创 刷代码随想录有感(107):动态规划——01背包/最后一块石头的重量II

思路转化:题干就是要留下来的石头最小,那么就是让石头尽可能分成重量相同的两堆相撞然后什么都不剩,那就转化成了求容量为sum/2的背包最多装多少重量了。

2024-06-18 10:14:45 147

原创 刷代码随想录有感(106):动态规划——分割等和子集(01背包问题)

j初始是sum / 2,j >= nums[i](能放选择不放和压根放不了是两码事)。递推公式:dp[j] = max(dp[j], dp[j - nums[i]] + nums[i](weight[i] == value[i] == nums[i])定义dp[j]:容量为j的背包所能装下的最大价值,本题则是将容量为sum / 2的背包装满。如果题目给的价值都是正整数那么非0下标都初始化为0就可以了,如果题目给的价值有负数,那么非0下标就要初始化为负无穷。从dp[j]的定义来看,首先dp[0]一定是0。

2024-06-17 08:53:35 175 1

原创 刷代码随想录有感(105):动态规划——01背包问题/一维dp数组(滚动数组)(更优)

同一个题目的两种解法,与二维dp相比,少了for循环初始化过程,另外遍历顺序上下不可颠倒,且0-1背包的j采取从后向前遍历防止物品i被重复放入,从前向后的是完全背包。

2024-06-16 11:58:33 224

原创 刷代码随想有感(104):动态规划——01背包问题/二维dp数组

所以递归公式: dp[i][j] = max(dp[i - 1][j], dp[i - 1][j - weight[i]] + value[i]);最终结果是dp[2][4],也即:i = weight数组长度减一,j = 包的最大容量。4.所求的目标结果:dp[weight.size() - 1][bagweight]1.定义dp[i][j]:对于背包问题,有一种写法, 是使用二维数组,即。2.递推公式:有两个方向推出来dp[i][j],

2024-06-15 17:20:45 352

原创 刷代码随想录有感(103):动态规划——不同的二叉搜索树

不需要考虑节点值的问题,只要看左右节点个数就可以了!

2024-06-14 09:55:35 119

原创 动态规划的遍历顺序

从初始化值后面的第一个开始。

2024-06-13 14:46:55 99

原创 刷代码随想录有感(102):动态规划——整数拆分

递推公式:①拆成两个:j 和 i - j;②拆成两个以上:j 和 dp[i - j],且dp[i]是dp[i]、j*(i-j)、j*dp[i-j]中的最大值(包括dp[i]的原因是dp[i]不断被更新取最大值),max()一次只能比较两个数。初始化:dp[0]=0、dp[1]=0、dp[2]=1。遍历顺序:从3开始,通过找规律有在i/2之前可拆得最大。dp[i]含义:i这个数被拆分且取乘积的最大值。

2024-06-13 14:43:02 198

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除