文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院媒体动画Director用Lingo解决组合问题
精品推荐
特别推荐
·Director中几种Scirpt
·【Director教程】属性列表应用一则
·用Director制作不规则窗口
·Director 动画技术
·Director 3D 基础(之五)
·DIRECTOR去背技法步步高
·director应用技巧
热点TOP10
·Director MX 2004教程-- Director MX 2004简介
·Director MX 2004教程--导入演员
·用Director制作不规则窗口
·Director MX 2004教程--为什么选择Director
·Director MX 2004教程--Director MX 2004都支持些什么?
·Director Lingo 语言入门(1)
·Power Director 3快速上手
·Director 动画技术
·director应用技巧
·Director Lingo 语言入门(7)
·Director Lingo 语言入门(2)
·Director MX 2004教程--常用多媒体编著软件
·Director Lingo 语言入门(9)
·DIRECTOR去背技法步步高
·Director 3D 基础(之五)
·Director MX 2004教程--用Lingo语法和JavaScript实现同一功能
·Director MX 2004教程--创建一个新电影
·Director Lingo 语言入门(5)
·Director Lingo 语言入门(8)
·Director 8.5 简单基础实例教程(八)

用Lingo解决组合问题

日期:2007年7月4日 作者: 查看:[大字体 中字体 小字体]



  用Lingo解决组合问题
   原著:Jerry McManus
   翻译:alphachi

[问题]

   有5张卡片,从中任取3张,列出所有可能的结果。

[分析]

   输入卡片列表并确定最终组合列表的长度 ——〉计算组合的总数并生成组合列表 ——〉输出组合列表

[代码]

   由于是有关排列组合的问题,必然会涉及到阶乘的计算。为了方便起见,可以先设计一个阶乘计算程序:

on mGetFactorial ( me , num)
   factorial = 1
repeat with x = num down to 1
     factorial = factorial * x
end repeat
return factorial
end

   接下来,就可以利用这个阶乘计算程序得到组合的总数:

-- 计算阶乘
listFactorial = me .mGetFactorial(pListCount)
subsetFactorial = me .mGetFactorial(pSubsetCount)
listMinusSubsetFactorial = me .mGetFactorial(pListCount - pSubsetCount)
-- 计算组合总数
pTotal = listFactorial / (subsetFactorial * (listMinusSubsetFactorial))
pNumLeft = pTotal

   现在,借助一个索引数值,通过循环语句即可生成一个索引列表:

on mGetCombination ( me )
-- 检测是否为第一次循环
if pNumLeft = pTotal then
-- 是第一次循环,使用当前子列表
     pNumLeft = pNumLeft - 1
else
-- 不是第一次循环,获取新的子列表
x = pSubsetCount
-- 在当前子列表中循环并增值
repeat while pCurrentSubset[ x ] = pListCount - pSubsetCount + x
x = x - 1
end repeat
     pCurrentSubset[ x ] = pCurrentSubset[ x ] + 1
repeat with y = ( x + 1 ) to pSubsetCount
       pCurrentSubset[ y ] = pCurrentSubset[ x ] + y - x
end repeat
-- 获取新的子列表
     pNumLeft = pNumLeft - 1
end if
end

   之所以没有直接对实际的卡片列表进行直接操作,是为了让程序拥有更强的适应性。因为只要拥有了索引列表,就可以对任何传入的实际列表进行“组合”操作,而不仅仅限于这个卡片列表。当然,只需再添加一些代码,即可生成实际的结果列表:

-- 生成结果列表
combination = []
repeat with x = 1 to pSubsetCount
   combination. add (pItemList[pCurrentSubset[ x ]])
end repeat

   下面的影片便是完成后的“组合生成器”:


播放,以上示例,需下载此插件。 点击下载插件

[说明]

   这项技巧虽然比较简单,但使用的范围却非常广泛,例如卡片的随机抽取或数列的随机生成。此外,在许多涉及到需要列举组合结果的数学问题中都占有一席之地。

[1] [2] 下一页 




上一篇:在Director MX 2004使用Flash里面的函数

下一篇:五子棋游戏的制作(2)

用Lingo解决组合问题 相关文章:
·XP系统运行慢?小编自用7招解决
·《边看边打赚大奖--迅雷宽频》部分问题及答案
·不用重装XP系统就可以解决全部故障
·全面解决Generic host process for win32 services遇到问题需要关闭
·中小企业整体网络安全解决方案解析
·开机提示reboot and select proper boot device or insert boot Media in selected boot device的解决
·SQL server 2005安装问题汇总
·笔记本电脑无线上网解决方案大比拼
·ORACLE常用傻瓜问题1000问
·解决与HTTP 500 – 内部服务器错误错误信息有关的问题
用Lingo解决组合问题 相关软件:
·网络常见问题与故障1000例
·有关毛泽东的一些问题解答(不完整版)
·中东问题的历史根源
·每天问自己十个问题
·瑞星杀毒防火墙组合版2007V19.46.20 完全免费版
·清华组合数学
·新剑侠情缘中文版 百宝箱完美组合
·生命问题
·百度知道 1850个经典问题
·AutoCAD应用技巧与常见问题你问我答

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot