算法
捏捏觉少
T大在读
展开
-
UVA1587 盒子 Box 数学表达式解析(给你整的明明白白)
原理剖析初看题目题主摸不着头脑,6个矩形的关系应该满足什么样的关系才能组成一个立方体?为了理清思路让我们画一个立方体观察(阅读过程中可随时跳到末尾代码处阅览以辅助理解):得出事实:立方体有3对对立面,对立面的形状一致;三条邻接棱即可唯一描述一个立方体,如图所示标红的三条楞;接下来按照以下步骤思考:定义长边为hhh,短边为www,三对对立面分别为p1,p2,p3p_1,p_2,p_3p1,p2,p3,他们各自的h,wh,wh,w应该带上相应的下标1,2,31,2,31,2,3例如p1原创 2020-12-14 11:24:04 · 395 阅读 · 0 评论 -
单链表反转-原地算法
最先想到的思路是仅遍历一遍单链表,在遍历的过程中修改指针使得目标节点的next节点指向之前的节点。为了简便我们可以首先考虑普遍(遍历在链表中部)的情况,我们有三个节点h(head),p,t(tmp),如下图所示。具体的步骤已经在图中给出,此时的局面是h已然指向前驱节点,接下来只需要把p的next指向h即可。反转的操作在步骤2,步骤3、4为了套娃。特殊的情况(遍历在第一个节点)h是没有前驱节...原创 2020-02-27 16:42:06 · 643 阅读 · 0 评论 -
统计二进制整数1的个数-loglogn算法
该算法在邓书解析[1-12]已经给出,解释虽然详细,但仍需要细心体会才能理解其中奥妙,本篇仅为辅助理解原作。给出源代码:round函数的输入必须是以2^c 为组,各组数值代表2^c 位中1的数目。突破口在于任何整数的二进制天然地以1bit分组每组值代表了“1”的个数。比如(5)b=0 1 0 1 。有了这个前提,一开始就可以放心地开始第一轮的round。注意掩码(mask)以当前每组数...原创 2020-02-27 02:19:47 · 1143 阅读 · 0 评论 -
最大子序和-线性算法,最顶的解释(maxSubsequenceSum)
问题描述给一段数组,找出一段连续子数组使得元素和最大。比如16个元素的数组A[13, -3, -25, 20, -3, -16, -23, 18, 20, -7, 12, -5, -22, 15, -4, 7]最大子数组A[7…10],sum=43上代码int maxSubsequenceSum(int *a, int num){ int left=0, right=0, sum=0,...原创 2020-01-20 23:08:52 · 233 阅读 · 0 评论 -
TsinghuaOj Programming Assignment #3.3 重名剔除(Deduplicate)
TsinghuaOj Programming Assignment #3.3 重名剔除(Deduplicate)重名剔除(Deduplicate)DescriptionMr. Epicure is compiling an encyclopedia of food. He had collected a long list of candidates nominated by several...原创 2018-11-14 02:25:38 · 1381 阅读 · 0 评论