关于7个数任意两数之差

lovezypj 2011-03-21 09:40:29
最近遇到个难题,搞了2天没结果,本来以为很简单,但发现还真不好弄,特求问大家,谢谢!有一个数组,固定7个数,number型,现在要求这7个数任意2个数之差不能小于30,可以对这7个数进行加减,要求做最少的加减运算,也就是说,如果改变其中一个可以达到要求就不要改变2个,另外如果这个数是-1就忽略,最后要求经过变化后所有的7个数的范围在A B之间,-1不算,保证变化前提供的数在这之间,可能等于,不会超过,最后的数在数组中的位置要和之前保持一致
...全文
145 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
lazyboy_wu 2011-03-21
  • 打赏
  • 举报
回复
有数组arr,有min 和 max

将数组赋值给一个新的数组,为了不让原数据变化, 例如n

进行从小到大排序

确定与min接近的数min_n,然后依次排序min_n到max_n

n[0](即min_n), n[1], n[2], ... n[6](即max_n)

从上面凡是差额小于30的数(与n[i-1]),则要进行变更,提出放到changes

变更的考虑

首先判断是将变更的数值范围从最小的数n[0]到min之间范围之间确定(当然也可以从n[n.length-1]到max)

也就是 n[0] - min % 30 > 0, 根据取模的获取能插入几个, 分别插入以后(changes[i] + 30),记录changelog[changes[i]] = changes[i] + 30

判断是否还有,如果有的话,则 计算 n[0] 与 与 n[1] 的数值之间能插入几个,依次到 n[n.length-2] 与 n[n.length-1] 之间, 最后直至n[n.length-1] 与 max之中

最后将arr.find(changelog.index) = changelog.value;
lovezypj 2011-03-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 aj3423 的回复:]
1. 7个数
2. 任意2个数之差>=30
3. 忽略-1
4 还有啥?
[/Quote]

还有就是要求最少计算,如果改变一个数可以达到要求就不要去改变2个数,另外有个范围A-B。最后生成的新的7个数都不要超过这个范围
lovezypj 2011-03-21
  • 打赏
  • 举报
回复
也就是通过最少的计算使7个数字任意两数之差都不小于30,可以对其中的数字进行加减

这7个数如果有等于-1的忽略不计算

最后计算生成的7个数的范围要在A-B之间,保证之前提供的在A-B范围,最高等于边界值,不会超过
aj3423 2011-03-21
  • 打赏
  • 举报
回复
1. 7个数
2. 任意2个数之差>=30
3. 忽略-1
4 还有啥?
lfkcn 2011-03-21
  • 打赏
  • 举报
回复
没看明白,挺复杂的样子

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧