回复:用200Smart做一个多头组合秤的程序

已锁定

Zaxife

  • 帖子

    2450
  • 精华

    31
  • 被关注

    78

论坛等级:至圣

注册时间:2008-07-24

普通 普通 如何晋级?

发布于 2021-03-20 17:18:40

23楼

展开查看
以下是引用芳季在2021-03-18 23:16:14的发言 >20楼

排序并不会使计算省下运算次数。数据该有几种组合就是几种组合,所有组合的各项相加结果可以全部不同。要得到指定的相加结果,有可能是算到最后一个的时候误差才为0。我能够猜到你的意思。你想通过排序然后从中间某处向两边找最佳值。大概都是这么做了。

只有误差才能使运算量下降。当你算出一个误差已经达到很小的时候,比如1,那么你觉得余下的组合的误差会不会比1小?不算不知道的。

现在就是在想,当误差已经合格的时候怎样离开循环。

楼上你看看还有什么想法?

以前看算法时,有类似这方面的解题思路。这个算法是找出一个接近的值,并不是列举所有最接近的组合。
做法如下:
1、从大到小排序;
2、取第一个跟需要的值比较,如果大于需要的值则第2、3、4个找下去找到小于需要值的,这样就可以减少很多N次判断;
3、取到第一个接近需要值后,再往下找运算和接近需要值的,大于就抛弃小于就采取;
4、重复比较取舍后很快会找到的,而不需要2^N的无限循环。
因为已经排序了,所以不用担心无用的重复比较问题。


至于要提前退出For?这不是很简单么?直接把FOR 的 FINAL 的值给 INDX的VW存储单元你看他还不乖乖的提前退出?或者强制来个JMP?他都得提前退出FOR循环的。

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8942条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。