数据结构与算法
zmingyang
这个作者很懒,什么都没留下…
展开
-
整数拆分--动态规划法
题目:将正整数n无序拆分成最大数为m的拆分方案个数,要求所有拆分方案不重复。例如n = 5, m = 5,对应的拆分方案如下:5 = 55 = 4 + 15 = 3 + 25 = 3 + 1 + 15 = 2 + 2 + 15 = 2 + 1 + 1 + 15 = 1 + 1 + 1 + 1 + 1思路:由例题可知,顺序不影响结果,我们采用动态规划法来解决问题。建立数组dp[n+1][m+1].其中dp[i][j]指正整数i被拆分为最多j个数字的方案数。注意不是一定要拆为j个而是拆为原创 2020-07-01 10:48:26 · 2653 阅读 · 0 评论 -
收费公路重建问题--回溯算法 JAVA实现
问题描述:设给定N个点p1,p2,…,pNp1,p2,…,pN位于x轴上,xixi为pipi的坐标,假设x1=0x1=0且这些点从左至右分布。则每一对点之间都对应一个距离|xi,xj|, (i≠j)|xi,xj|, (i≠j),共计有N(N-1)/2对点产生的距离。 收费公路重建问题是从这些距离重新构造出点集。简单举例:设D是距离的集合,并设D={1,2,2,2,3,3,3,3,4,5,5,5,6,7,8,10}。D包含15个元素,因此点集大小N=6。初始设x1=0,进而x6=10。算法思路:收费原创 2020-05-30 14:41:19 · 565 阅读 · 0 评论 -
分治算法--最近点问题java解法
问题描述:最近对问题要求在包含有n个点的集合S中,找出距离最近的两个点。设 p1(x1,y1),p2(x2,y2),……,pn(xn,yn)是平面的n个点。严格地将,最近点对可能不止一对,此例输出一对即可。原创 2020-05-16 11:11:17 · 1387 阅读 · 0 评论