找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 764|回复: 4

[编程申请]:挑战难度﹐程序编程。

[复制链接]
发表于 2005-6-27 11:39:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在建筑上经常的钢铁原料长度为12米一条,而建筑需要用钢铁的长度(比12米短)﹑数量各不相同﹐为了能节约用铁量﹐一般都是人工计算怎样能把各不相同的长度与数量的铁搭配起来使用钢铁原料是最节约的,如果Vlisp程序该怎样设计并把它的结果写入文件内﹖
    如:16厘的钢铁原料为12米一条﹐现在需搭配以下用铁:
2条5.7米  13条6米  9条2.4米  30条1.8条  5条4米  7条3米  3条2米,怎样计算把这些用铁所需的钢铁原料最少﹖


[B]请版主奖励成功编程设计者。[/B]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-6-27 19:43:15 | 显示全部楼层
这个题目很有趣,让人很想试一下。
试编了个程序,虽然理论上能解决这个问题,但由于算法很笨,8段就要算半分钟,估计每加一段时间会加倍,实际段数要有楼主要求的那么多,可能有生之年都看不到结果。。。呵呵。
就算抛砖引玉吧,期待高手。。。

;;;怎样节约钢筋

(defun c:lss (/ lst0 lst1 lst2 longest)
  (defun sub2 (lst n / m lst1)
    (setq m 0 lst1 nil)
    (while (setq ls (nth m lst))
      (if (/= m n)
        (setq lst1 (cons ls lst1))
      )
      (setq m (1+ m))
    )
    (reverse lst1)
  )

  (defun sub1 (lst0 lst1 lst2 / ls1 lst2 n)
    (cond
      ((and lst3 (> (length lst0) (length lst3))))
      (lst2
        (setq n 0)
        (while (setq ls (nth n lst2))
          (setq ls1 (cons ls lst1))
          (if (> (apply '+ ls1) longest)
            (progn
              (setq lst0 (cons lst1 lst0)
                    lst1 nil
              )
              (sub1 lst0 lst1 lst2)
            )
            (sub1 lst0 ls1 (sub2 lst2 n))
          )                                ; if
          (setq n (1+ n))
        )                                ; while
      )                                        ; progn
      (1
        (if lst1
          (setq lst0 (cons lst1 lst0))
        )
        (if (or (not lst3) (> (length lst3) (length lst0)))
          (setq lst3 lst0))
;;;        (setq lst3 (cons lst0 lst3))
      )
    )                                        ; if
  )

;;;  main
  (setq        lst1        '(3.5 9 6 2 1 8 4.4 6.9) ;分段的钢筋长度
        longest 12.0 ;钢筋的最大长度
        lst3 nil
  )
  (sub1 nil nil lst1)
  (princ lst3)
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

发表于 2005-6-27 23:35:37 | 显示全部楼层
觉得没有必要一定要用lisp来写吧,用其它的语言可能会更理想
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-6-28 12:12:22 | 显示全部楼层
最初由 xiao_longxin 发布
[B]觉得没有必要一定要用lisp来写吧,用其它的语言可能会更理想 [/B]


这种程序主要是算法,是数学的问题。与什么语言影响不大吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3个

财富等级: 恭喜发财

发表于 2005-6-28 14:09:29 | 显示全部楼层
是的,应该用整数规划来求得一个算法。但如果有遇到枚举之时,用其它语言可以速度上要快上些。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-16 00:30 , Processed in 0.241713 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表