
算法
算法
ོ栖落
无聊就写写
展开
-
【LeetCode363】矩形区域不超过 K 的最大数值和(前缀和+二分)
确定一个矩形区域一定要四条边,但我们要确定一个矩形区域是想求出它的和以满足最大的不超过k。而矩形区域的和可以看成是一列一列的和,如果我们把每一列的和全部求出来,实际上矩形区域的和就是一个数组的和。假定第四条边对应着前i项的值,第三条边对应着前j项的值,我们就是要找出满足。对于一维数组,想要知道区间内的和可以使用前缀和,也就是数组第i项的值为前i项的和 ,其实在求和的过程中就确定了第三条边。我们可以只用枚举三条边,而第四条边可以采用二分查找,减少第四条边的枚举。,m和n最大100,计算量最大为。原创 2023-05-24 11:22:14 · 142 阅读 · 0 评论 -
【AcWing】0-1背包+完全背包+多重背包+分组背包(C语言)
有 NN 件物品和一个容量是 VV 的背包。每件物品只能使用一次。第 ii 件物品的体积是 vivi,价值是 wiwi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。第一行两个整数,N,VN,V,用空格隔开,分别表示物品数量和背包容积。接下来有 NN 行,每行两个整数 vi,wivi,wi,用空格隔开,分别表示第 ii 件物品的体积和价值。输出一个整数,表示最大价值。原创 2022-10-02 22:54:21 · 178 阅读 · 0 评论 -
【C++】矩阵的乘法
由矩阵相乘的性质可以用三层循环求出结果,注意i的循环需要放在最外层,j的循环需要放在中间层,k的循环需要放在最低层。因为矩阵A是2×3矩阵,矩阵B是3×3矩阵,A的列数等于B的行数,所以矩阵A与B可以相乘,乘积AB是一个2×3矩阵。矩阵相乘时需要注意两点,一点是矩阵1的列数要等与矩阵2的行数,一点是矩阵相乘后的矩阵。手算一下AB,不难发现结果是正确的。先复习一下矩阵的乘法。原创 2023-05-19 19:00:55 · 4860 阅读 · 0 评论 -
汉诺塔问题
传说印度的主神梵天做了一个汉诺塔,它是在一个黄铜板上插上3根宝石针,其中一根针上从上到下按从小到大的顺序串上了64个金片。梵天要求僧侣们轮流把金片在3根针之间移来移去,规定每次只能移动一片,且不许将大金片压在小金片上。此时就会发现问题复现了,接下来的操作就相当于要把余下的n-1个放到目标位置。表示将第n个金片从起始位置经临界位置移动到目标位置。复现,只不过现在是从原来的临界经开始移动到目标位置。在金片移动的过程中,必定会剩下最后一个金片。然后把最后一个金片移动到目标位置。最后一个金片移动到目标位置。原创 2023-03-17 22:12:53 · 805 阅读 · 0 评论 -
【LeetCode200】岛屿数量(深度搜索)
当遍历为1的时候,就说明有一个岛屿,岛屿数量自加1。然后从四个方向上深搜,如果遇到海水或者该块陆地访问过就结束深搜,最后可以确定一个岛屿的范围。原创 2023-05-24 19:52:26 · 147 阅读 · 0 评论 -
【LeetCode135】分发糖果(将问题拆分)
尝试将一个问题可以拆分成几个分支,然后根据分支的结果确定这个问题的结果。原创 2023-05-18 17:26:23 · 76 阅读 · 0 评论 -
八皇后问题
,是由国际象棋棋手马克斯·贝瑟尔于1848年提出的问题,是的典型案例。问题表述为:在8×8的国际象棋格上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人。如果经过±90度、±180度旋转,和对角线对称变换的摆法看成一类,共有42类。原创 2023-03-12 16:40:19 · 503 阅读 · 0 评论 -
【LeetCode3】无重复字符的最长子串(滑动窗口)
窗口维护的是无重复字符的最长子串。原创 2023-05-18 17:40:32 · 72 阅读 · 0 评论 -
【LeetCode1】两数之和(哈希表)
给定一个整数数组 nums和一个整数目标值 target,请你在该数组中找出 和为目标值 target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。...原创 2022-08-09 17:35:09 · 723 阅读 · 0 评论 -
【LeetCode11】盛最多水的容器(双指针)
给定一个长度为 n 的整数数组 height。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i])。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明:你不能倾斜容器。原创 2023-03-30 11:56:30 · 178 阅读 · 0 评论 -
【AcWing30】正则表达式匹配(动态规划)
那么 dp[i][j] = dp[i]j-2。3.2 如果是多次重复 那么 p[j-2] 与s[i-1] 相等 或者p[j-2]==’.’ 那么dp[i][j] = dp[i-1][j]1 p[j-1] 是字母 而且与 s[i-1] 相等,那么当前dp[i][j]是否匹配就依赖于dp[i-1][j-1]2 p[j-1] 是. 那么肯定与s[i-1]相等, 当前dp[i][j]是否匹配 就依赖于 dp[i-1][j-1]dp[i][j] 表示 s[0~i)的字符串与p[0~j)的字符串是否匹配。原创 2023-05-25 11:58:46 · 305 阅读 · 0 评论