社区
数据结构与算法
帖子详情
求算法
beiyeqingteng
2008-08-27 02:20:02
有两组数,第一组的数分别用Mi来表示0<=i<=m;另一组数用Nj来表示0<=j<=n,其中m>n.现在让Nj与Mi配对(很明显,Mi最后还有剩余,我们只要让Nj使用完毕即可),使的他们差的绝对值之和最小。
...全文
107
1
打赏
收藏
求算法
有两组数,第一组的数分别用Mi来表示0<=i<=m;另一组数用Nj来表示0<=jn.现在让Nj与Mi配对(很明显,Mi最后还有剩余,我们只要让Nj使用完毕即可),使的他们差的绝对值之和最小。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
大王派我去巡山
2008-08-27
打赏
举报
回复
假设M_i(0)<=M_i(1)<=...<=M_i(n)是与N_0<=N_1<=...<=N_n相匹配的n+1个数,那么最佳匹配方案一定是:
M_i(0)与N_0匹配、M_i(1)与N_1匹配、...、M_i(n)与N_n匹配。
实际上对于a(1)<=a(2)、b(1)<=b(2)来说,一定会有|a(1)-b(1)|+|a(2)-b(2)|<=|a(1)-b(2)|+|a(2)-b(1)|,这点分情况讨论就可以总结出来。
有了上面的结论,很容易就可以通过反证法证明前面的匹配方案一定是最佳的。
基于上面所述的匹配方案,通过动态规划很容易得到答案。
将这两组数分别由小到大排好序之后,用dp(i,j)表示
在Mi与Nj配对的情况下
M数组前i+1个数和N数组前j+1个数的最佳匹配方案。
显然这里有i>=j、0<=i<=m、0<=j<=n
边界条件:
dp(i,0)=|Mi-N0|
状态转移方程:
dp(i,j)=|Mi-Nj|+min{dp(k,j-1) | j-1<=k<=i-1}
最后遍历所有的dp(i,n),n<=i<=m,最小值就是题目的解。
JAVA近百种
算法
大全
3. 栈:后进先出(LIFO)的数据结构,常用于函数调用和表达式
求
值。 4. 队列:先进先出(FIFO)的数据结构,适用于任务调度和消息传递。 5. 树:非线性的数据结构,如二叉树、平衡树(AVL、红黑树)等,常用于搜索和...
《数据结构及
算法
经典》源代码.
目录: 单元加 字符 底层编程 效验
算法
数学问题 数据结构 数组 文件程序
求
进制 汉诺塔 硬币情况 逆阵 问题
算法
小写数字转为大写数字 其它 <br/>...
结构之法
算法
之道blog最新博文集锦第6期CHM文件
例如,栈的后进先出(LIFO)原理在函数调用和表达式
求
值中至关重要;二叉树和图则广泛应用于搜索和排序问题。 2. **
算法
分析**:包括时间复杂度和空间复杂度的分析,是评估
算法
效率的重要手段。通过对
算法
运行过程...
入门
算法
-
算法
的时间复杂性分析(计算书的页码)
1、
求
下列函数的渐近...2、分析下面
算法
属于什么功能,并
求
算法
的时间复杂性函数 int factorial(int n) { if (n == 0) return 1; return n*factorial(n-1); } 3、
算法
实现题,要
求
写出问题的分析过程,然后上机...
求
最大公约数的4种
算法
(C++)
求
最大公约数的4种
算法
(C++) 一、实验目的 1.计算两个正整数的最大公约数和最小公倍数,并进行程序的调式与测试。 2.理解四种不同的
求
最大公约数的方法,学习其思维模式。 3.了解
算法
的概念。对问题的分析时,...
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章