一道算法题,不需要源码,能提供思路就行了

图片说明

刚才写的有点小失误, 首先使用 冒泡排序法 对数据做一次排序,
判断是否存在 插队的 情况 ( 就是 数据大小错位了) ,如果完全吻合 , 就像你输入的第一组数据,
那么直接输出 0 , 说明没有插队的情况, 如果存在插队的情况, 先找到最小值, 记录 索引位置,
然后在索引前面找到一个 比他最大的值, 一定要最大 ,这样 max(0,ai-aj) 才能最大。 然后再在 最小值的 索引的后面 找到一个比他最小的值
, 这样 max(0,aj-ak) 才能最大, 若没有比他小的, 那么 max(0,aj-ak) 都是 0 ,结果都一样 。 这次绝对没问题。
希望采纳哦。 我也是很用心的在指导你哦 。

动态规划,建立一个3维数组
arr[i][j][k],填充的是max(0,ai-aj)+max(0, aj-ak)的值。
然后遍历这个数组,找到最大值,就是结果。

需要编写代码给你么?

我来告诉你怎么处理, 其实很 简单, 首先使用 冒泡排序法 对数据做一次排序,

判断是否存在 插队的 情况 ( 就是 数据大小错位了) ,如果完全吻合 , 就像你输入的第一组数据,
那么直接输出 0 , 说明没有插队的情况, 如果存在插队的情况, 先找到最小值, 记录 索引位置,
再找到最大值, 再次记录索引位置,然后从 两个索引的 中间取出数据, 使用 max(0,ai-aj) + max(0,aj-ak),
记录 第一个数据计算值, 先缓存, 然后再计算下一个, 与前一个缓存的做比较, 看谁的大, 就要谁的,
小的那个直接丢弃了, 一直到 最大索引的 前一个计算值。 希望采纳哦。 我也是很用心的在指导你哦 。

动态规划,首先建一个三维数组,对其中的每个数进行遍历,这是一种方法,其二就是借鉴操作系统利用位图矢量法确定任务优先级的方法