摘要: 什么是凸包? 我的理解就是,图形任意两点的连线都没有在图形外部。 问题:给定点集,怎么求出凸包的边界点呢??? 第一步:给这些点按照X的从大到小进行排序,如果X相同的按照Y再排序。 第二步:把X最小的和最大的连起来,他们必为凸包的边界点。 第三步:把平面区域分为两个部分,分别在上面和下面去找面积最大 阅读全文
posted @ 2020-03-17 23:16 Swithun 阅读(1118) 评论(0) 推荐(0)
摘要: 背包问题概述:有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和? 如果按照蛮力法去算的话复杂度会很高,大概是2^n次,因此不会用蛮力法。 在这里可以依据动态规划的思想来做这个。 首先规定i代表第几个物品,j代表体积。Vi代表第i个物品的价值,Wi代表第 阅读全文
posted @ 2020-03-17 23:01 Swithun 阅读(205) 评论(0) 推荐(0)
摘要: 问题:两个软硬程度一样但未知的鸡蛋,它们有可能都在一楼就摔碎,也可能从一百层楼摔下来没事。 有座100层的建筑,要你用这两个鸡蛋确定哪一层是鸡蛋可以安全落下的最高位置。可以摔碎两个鸡蛋。 这道题的关键是如何去确定第一次下落鸡蛋的楼层,如果太小,没有摔碎,而剩余的范围依然很广,如果太大,摔碎了只剩一个 阅读全文
posted @ 2020-03-17 14:31 Swithun 阅读(272) 评论(0) 推荐(0)
摘要: 如果你理解到了冒泡算法的真谛你一眼就会看出这就是一个冒泡算法就能解决。只不过在进行移位操作之前,要先对碟子进行处理,将黑碟子赋值为1,白碟子赋值为0,然后放到数组里面去,进行冒泡排序就可以了。 1.是101010,和相邻比较,然后移位 2.是011010,和相邻位比较会发现,相同因此跳过 3.是01 阅读全文
posted @ 2020-03-16 22:06 Swithun 阅读(1054) 评论(0) 推荐(0)
摘要: 选择排序是每次在数组中选一个最小的(最大的)数,放到数组的第一个位置,执行到数组最后一个元素的前一个元素就可以了。 选择排序复杂度为n^2。但是它有个优点就是它交换元素的次数很少。因为它是以一个key值在记录最小值所在的地方,最后才交换。 阅读全文
posted @ 2020-03-16 21:41 Swithun 阅读(109) 评论(0) 推荐(0)
摘要: 冒泡算法的原理是首先每轮比较然后把相邻两个中较大的数向后面传,直到找出最大的那个数送到数组最后面(当然你也可以去找一个最小的数然后传到数组的最后面),注意每次比较完一轮要减小数组的长度,因为你已经把最大的(最小的)数传到数组后面。 可以对冒泡算法进行效率的提升,比如如果比较完一轮都没有进行过项的交换 阅读全文
posted @ 2020-03-16 21:35 Swithun 阅读(532) 评论(0) 推荐(0)
摘要: 首先要明确什么是斐波拉契数列即:除了第一个和第二个元素1,1外,后面剩余的元素都是前两个元素相加得来的。 1、1、2、3、5、8、13、21、34。。。。。。 为什么能用矩阵来求斐波拉契数列呢? 首先看看这个矩阵相乘 可以把右边的矩阵看作是前第二个和第一个斐波拉契数列数组成的,因此乘了左边那个矩阵就 阅读全文
posted @ 2020-03-16 17:28 Swithun 阅读(289) 评论(0) 推荐(0)