- 博客(15)
- 问答 (1)
- 收藏
- 关注
原创 多重背包问题
跟完全背包思路一样,三重循环,但是在最内层循环有一个判断条件,k<=s[i](个数不能多于总个数),f[i][j]=max(f[i][j],f[i-1][j-k*v[i]]+k*w[i])
2024-06-27 23:55:07
264
原创 完全背包问题浅谈
跟01背包相似,我们把f[i][j]分为k类,分别是含0个第i个物品,含1个,含2个.......含k个。那么f[i][j]的更新方程就是f[i][j] = f[i-1][j-v[i]*k]+w[i]*k(针对于第k类而言,同样要有j>=k*v[i]的条件限制)
2024-06-27 11:10:31
231
原创 01背包问题浅谈,优化
我们将f[i][j]划分为两种情况,分别是包含第i个物品和不包含第i个物品这两种情况,由此递归,就可以解决问题,但是不是第二种情况不是时时刻刻都可以存在,当第i个物品的重量超过背包所能放置的重量时,第二种情况将不复存在,所以在取最大值的时候要进行判断。,他要满足两个条件,从前i个物品中选,且重量不超过j。因为在数组内有i-1所以下标要从1开始以防数组越界。
2024-06-24 23:19:32
223
原创 DFS-树的重心
在了解这道题目之前,我们首先需要知道图的深搜是如何进行的,我们用一个无联通单向图来记录这一类,因为单向图再添加的时候只需要往两个节点分别都添加连接即可,而树是图的一种特例。
2024-06-22 22:48:34
228
原创 BFS-走迷宫
我们要求的是从起点到终点的最短距离,那么我们每次可以记录一下这个点到起点的距离是多少,最后在直接输出最后一个点的这个值即可,所以我们想到了用一个数组来完成这个任务.因为地图上有些店是不可以走的,所以我们用一个二维数组来存储这个地图,从开始分别向它所能走的所有方向开始前进,然后遍历这些可以走的路,最后遍历到重点输出即可.我们用队列来存储走的点,是因为我们需要把一开始那些距离近的点(离起点近的)"抛"出去,因为我们最终只需要得到最后一个点到起点的距离,搜索到最后一个点的时候就会停止搜索了,并且。
2024-06-20 21:02:26
201
原创 DFS-排列数字
分别对这些数字进行排序,有多少个数字就有多少个空位,从前往后一个一个空位排列,并且为了保证顺序不重复,所以使用一个布尔类型数组来记录这个数字有没有被使用过(在本次排列中),在搜索过程(往下一位排列时),如果下一位排完了就要回溯,看上一位数字有没有可以进行更换的排列,以此类推记录下所得到的排列,当排满了的时候就可以输出。以及在回溯后要恢复原来状态。
2024-06-18 18:43:35
131
原创 手搓堆排序体悟
A:因为在处理树的时候树里的元素个数是会变化的,如果非要用n来比较,那么在main函数中处理时要让n--Q1:在down函数中第二个if中一定要小于h[u],而不可以是h[x]A:是因为在第一个if中可能会改变u的值,具体便是如下这种情况。Q2:在down函数中比较的边界必须是Size。
2024-04-08 21:54:16
123
原创 第k个数小体悟
倘若需要找到第k个不重复的数,可以引入一个t来记作有多少个不一样的元素(从前往后遍历数组的时候)在对vector使用sort时,使用sort(x.begin(),x.end())就好。如上便可找出第k个不重复的小的数。
2024-03-28 11:14:39
152
空空如也
子串问题个人思路不知道哪儿错了求解
2022-11-15
我这个list里面明明有姓张的啊为啥报错说没有啊
2022-07-08
TA创建的收藏夹 TA关注的收藏夹
TA关注的人