第六十五章 算法和程序完成
下面会将粗略的算法流程图,发给大家,大家可以提出修改意见。 相信大家也已经注意到了,招待所的每一个房间里,都分配了一台电脑,并且都已经连接上了互联网,有什么需求请直接告诉楼道口的保安。 在此期间的所有事情,都是保密的,未经许可,绝对不可以和外界联络,不能外出,不允许外来的访客,招待所处于封闭状态。 讲解者说完后,就要转身离开,一名保安拦住他,指了指张毅,耳语了一番。 他马上转身走回到张毅身边,客气的问道:“这位同学,你带着手机是吗?” “是的!”张毅边回答,边拿出了手机。 “不好意思,手机我们暂时帮你保管可以吗?” 张毅看到这样的情景,心里止不住的吐槽:我可以说不吗? 耸了耸肩膀,关掉手机,递给对方。 拿到这部手机时,讲解者有些诧异,很明显的,这部手机有别于市面上的,那种超级大砖头,显得小巧玲珑多了,相信也价格不菲,真是看不出,这么小的年龄的大学生,就能买这么好的手机,想来,是一名富二代吧! 就在讲解人即将转身离开时,张毅突然问道:“如果能快速完成这个程序的话,是不是就能早点离开?” “当然,早一点完成,咱们的时间就更充裕,成功的可能性就越大,给国家造成的损失就越小。” 看着面前这名稍显稚嫩,但自信满满的面孔,讲解者怔了怔,难道他能很快的解决这个大麻烦吗?不太可能吧! 张毅看着渐渐远去的讲解者,禁不住轻松的笑了笑:对你们来说,这可能是个大难题。对我来说,呵呵! 拿着下发的文件,他仔细看了一遍,对于现在的他来说,尽管还做不到过目不忘,但也差不多了,里面的算法和变量说明,他基本全部记了下来。 算法采用了枚举法,最基本的算法之一,枚举算法的思想是:将问题的所有可能的答案一一列举,然后根据条件判断此答案是否合适,保留合适的,丢弃不合适的。 在c语言中,枚举算法一般使用while循环实现。使用枚举算法解题的基本思路如下:确定枚举对象枚举范围和判定条件。逐一列举可能的解,验证每个解是否是问题的解。 枚举法是能解决问题,但问题是,这种算法的效率太低,追求的是精确值。 关键是碎片的数量太多,如果靠这种精确的计算的话,等撞击发生了,计算还未必能完成。 上面要求的,并不是完全避免撞击,只是利用有限的卫星燃料,进行最小幅度的变轨,规避对卫星伤害最大的撞击。所以枚举法没问题,但不适合做为计算天体运行程序的基础算法。 脑海中,在已经开发的脑域中,脑波搜索如雷达一般,不断的快速扫描着。 算法有很多,但却未必适合现在的情况,无论怎么说,枚举法是绝对不符合要求的。 有了,这种算法不错,在github的浩如烟海的源代码库中,他找到了一种合适的算法。 贪心算法:从问题的某一个初始解出发,逐步逼近给定的目标,以便尽快求出更好的解。当达到算法中的某一步不能再继续前进时,就停止算法,给出一个近似解。这个近似解就无限接近于精确值。 首先建立数学模型来描述问题。然后把求解的问题分成若干个子问题。对每一子问题求解,得到子问题的局部最优解。把子问题的局部最优解合并成原来解问题的一个解。 这样的算法,最大限度的利用计算机多线程的性能,以最快的速度来解决问题。最是适合现在这种状况。 拿出稿纸,速度飞快的,完成了算法的流程图。 有了算法,就有了程序的灵魂。考虑到天体运行时的差之毫厘,谬之千里,轨道的参数变量都采用了双精度浮点型,最大程度的保证了计算的精确性。 打开计算机,运行桌面上早已经安装好的tuborc编译器,并没有直接开始写源程序,只是新建了一个.h的库文件,把脑域开发中,得到的一个计算天体运行的库文件,几乎如复制一般,将脑海中搜索到的代码,复制到眼前的计算机上,检查了一遍后,习惯性的做了加密和反编译处理。 有了这个库文件,几乎所有天体运行时,所需要的函数都一一包含在内,他要做的,只是确定变量,调用库函数,完成程序框图所要求的功能。就像写文章,提纲和框架都齐全了,无非就是用语言让它血肉丰满起来而已。 程序编写的如行云流水一般。不到一天的时间,就基本处于完成状态了。 考虑到程序bug会造成的严重后果,张毅小心翼翼的,用自己的测试程序,严格测试了很多遍,修正了一些潜在的bug,尽管这些bug,基本不可能会出现,但不怕一万,就怕万一。 事实上,依他现在的脑域开发水平,和超强的记忆力,再加上远超所有人的c语言编程水平,不太可能会出现程序bug。 尽管已经完成了程序,他却并没有提交上去,这么快的速度解决问题,上面会不会把自己当小白鼠一样给解剖了,还是安全第一。 刚好利用多余的时间,张毅完成了教育版的微硬输入法,和教育版的微硬压缩软件。 从天南地北聚集过来的攻关小组,每天依旧是早晨开会,讨论算法,交流进度。 张毅每次会议都会参加,还积极的拿着稿纸,不时的记录。感觉像是一名认真学习的学生一般,只会亦步亦趋,丝毫没有表现出自己的特别。 稿纸上,写着一堆软件内容,包括画图软件,音乐和视频播放器,办公软件,进销存系统,一体式集成编程软件ide,图书器等等的,完全和会议内容风牛马不相及。 上面要求的算法和软件都已经完成的情况下,来这里听会议,纯粹是完全的浪费时间,但两世为人的他明白,木秀于林,风必摧之,他来这里,可不是为了出风头,没事找事的。