荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: tang (独孤九剑〖玄铁重剑〗), 信区: Program
标  题: Re: 编程?!
发信站: BBS 荔园晨风站 (Sun Mar 19 22:30:31 2000), 转信

其实这种方法等价于深度为N的二元树的深度遍历!
需要遍历所有的2^N+1个结点!
用二元树来分析的话,很容易就能得到一些剪枝的方法!
象编号以111打头的子树的所有结点都不用搜索了,这样可以
大幅减少搜索结点数!
【 在 onedot (小点) 的大作中提到: 】
: 打个比方,以前有个编程小题目,说
: 往一些坑里埋废料
: 有N个坑,如果相邻的连续3个坑里面都埋就会引发爆炸
: 要求编程求出N坑可以有多少种不爆炸的埋法!
: 也许大多数人第一次一想就用数学的排列组合求,然后编程实现
: 而往往忽略了计算机的强于计算的能力,而且组合公式也由于不
: 少人考虑欠周全,写的是不正确的
: 而有一种解法就是把N个坑看作N位的2进制,如果这个坑里有则
: 看作这位为1,否则为0,这样每种埋法一一对应一个2进制的数
: 如:10011(第1、4、5个坑埋了废料)。N个坑共用2的N次种埋法
: 而爆炸就是那种有连续3位为1,这个用计算机处理特别方便。
: 所以要求等价于求从1到2的N次方这么多2进制数里,有多少种连续
: 3位为1,这个很方便,每次除2求模,是1记数一次,对商继续/2
: 求模,是1再记数,是0,则记数清为0,这样如果一个数这样处理
: 记数达到3表示是一种爆炸情况。如7=0111,就是一种。
: 这种处理放在1。。2的N次的循环里,再设个计数器,自然就可以
: 得解,而且不会出现公式错误
: 【 在 Minatl ([3;38H[]到本站一游。) 的大作中提到: 】
: :    最重要的东西在我的脑袋里,这是我现在对编程的看法。
: :    刚入大学时,我觉得我起步早,有一点骄傲,因此我发过如“XXX easy!"之类
: : 的文章招来臭骂一阵,现在想来他们也许是吗对了。XXX 并不代表着什么。
: :   我在大学里接触的第一门window编程语言是delphi(因为我中学是靠pascal的).
: : 从此我就进入了所谓的delphi狂热期,在Program版狂贴delphi的文章,但是在
: : 这一时期我的编程水平并没有大的进展,粘粘贴贴,想想打打,在用面相对象的语言
: : 却没有用完善的面相对象的思想编程。这也许就是"简单编程机器阶段",不过在这
: : 一阶段也有一些小收获(文化节那个啊,不知是我好运,还是裁判水平底^_^)
: :  不久我又进入了迷茫期,我看多了一些软工的一些文章和新技术的文章,觉得
: : 我在这样的环境里很难有机会接触一些最新的技术(如三层结构,DCOM,CORBA)
: : 觉得我的编程只是简单的Coding,顿时我对编程的兴趣大减,对CASE,Linux等的
: : 兴趣增加,东试试,西尝尝,寻找新的出路。
: :  大二了,我有变了变,我发觉我虽然接触不到那些最新技术,但我的Coding也是
: : 有意义的,Case虽然美妙但我还是喜欢用笔写。
: :   Thinking,Coding ,Reading,Writing循环的编程生活使我的水平有提高(虽说不大,
: : 但好过没有啊^_^)
: :   语言只是一种工具,思想才是最重要的
: :   技术再新,再好,用不上也是白搭
: :   基础很重要,毅力和勇气是关键
: :    我曾经偏激过,骄傲过,也曾经迷茫过,现在我
: : ~


--
海到天边天作岸
山登绝顶我为峰

※ 修改:·tang 於 Mar 19 22:31:41 修改本文·[FROM: 192.168.63.241]
※ 来源:·BBS 荔园晨风站 bbs.szu.edu.cn·[FROM: 192.168.63.241]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店