一种高效计划制定程序的使用及计算方法

文档序号:9866294阅读:445来源:国知局
一种高效计划制定程序的使用及计算方法
【技术领域】
[0001]本发明涉及应用程序,具体地说是一种高效计划制定程序的使用与计算方法。
【背景技术】
[0002]目前,已有一些计划制作(即对多个工作或学习的计划安排)的电脑软件或者手机应用程序,但是,它们的主要功能是录入使用者的工作或学习计划,然后让使用者进行安排。大致的形式有两种:1.记事本型,记录使用者输入的计划,完成后使用者可以将其勾除;2.闹钟型,与安装终端的时间关联,根据时间使用闹钟提醒使用者执行计划。而这些计划制作软件,只能起到记录和提醒的作用,并不能帮助使用者做出最为高效的安排选择。

【发明内容】

[0003]本发明所要解决的技术问题是:为弥补现有技术的缺陷与不足,开发一款软件,并利用其独特的任务计算方法,帮助用户制定一个最为高效的计划——在有限的时间内实现完成任务总价值最大化,用户使用时,只要输入计划的内容,再加入关于计划的时间和价值评估就可以得到最为合理的计划安排,同时还可以起到记录的作用。
[0004]本发明解决其技术问题所采用的技术方案是:
一种高效计划制定程序的使用及计算方法,其所采取的使用步骤及计算方法如下:
A、选择语言:程序用户输入语言选择,支持汉语和英语两种语言,大大地扩大了用户面;
B、输入:输入程序所需要的信息:用户的计划工作时长、任务数量以及每一个任务的名称、任务的时间和任务的重要性打分;程序使用整实型变量存储工作时长、任务数量、每一个任务的时间和任务的重要性打分,使用一个字符型二维数组,存储每一个任务名的字符串。程序在Windows DOS环境下运行,输入存储十分快捷,可以在百万分之一秒内完成记录,操作流畅;
C、运算:根据输入的数据,计算在计划时间内所能完成的重要性的最大值,其具体实现的核心算法是动态规划的01背包算法,在算法内,把用户所拥有的时间作为背包,把工作任务作为要放入背包的物品,每个物品的价值则是每个任务的重要性,核心代码使用的是一维滚动数组进行动态规划运算。节省了程序运行空间,即使运算量再大也不会影响电脑的运行,对电脑的性能要求也很低。运算十分快捷,可以在I秒之内得出结果。具体的实现手段是,以一维数组(dp[241],因为最大时间长度为240分钟)的下标作为时间,数组里的每一个值在计算结束后存储的就是使用对应下标时间能够达到的最大重要性值。当一组数据录入时,得到当前任务的时间(tuse)和重要性(imp),此时遍历一次数组,当dp[i]<dp[1-tuse] +imp (i是遍历数组时用到的变量,指当前时间)时,说明如果执行当前任务,则工作时间i得到的重要性最大,为dp [1-tuse](当前时间减去完成当前任务的时间时能得到的最大重要性)与imp (当前任务的重要性)之和,因为dp[1-tuSe]的值一定是最大的,所以得到dp[i]的值也一定是最大的,所以此时则可以把dp[1-tuse]+imp的值赋给dp[i];反之则继续循环直到遍历完整个数组则继续录入下一组数据;
D、记录:使用二维标记数组,在运算过程中记录每个计划的任务列表,并不断更新,如果有多个计划符合最佳结果时输出的是最后的一组。具体的实施方法是,当dp[i]<dp[1-tuse] +imp时,则需要更新当前时间i达到最大重要性值所要执行的任务列表。源代码中使用一个名为name[101][101]的字符型二维数组记录每一次任务名的输入,因为总任务数不超过100,而每个任务的名字长度不长于100,两个下标的含义为name [任务数][任务名]。并使用一个名为use[241] [101]的整实型二维数组标记对应时间若需达到最大重要性是否需要使用某个任务,两个下标的含义为use[时间][任务数],假若在时间i需要使用到任务j,则进行赋值use [i] [j]=l,use数组的初始值全为零,使用I表示使用任务,O表示不用任务。当第j个任务符合条件,需要把dp [1-tuse]+imp (imp为当前第j个任务的重要性)的值赋给dp[i]时,使用“memset (use, O, sizeof (use[i])); ”的语句来重置use [i]这个时间所有任务的情况,再把use [1-tuse]的每一个值赋给use [i],最后把use[i] [j]标记为I,组成新的任务列表;
E、输出:首先输出根据计算得出的在计划时间内可以达到的最大价值,然后根据最大价值对应的状态,调取标记数组中记录的状态,把字符串数组里的对应了被标记了的任务名输出,组成最佳计划清单。具体的实现方式是,遍历数组dp [1..time](从I到计划时间),用整实型变量max记录能够达到的最大重要性值,并使用变量j记录达到max时对应的所用时间。先输出最大重要性值max,然后开始遍历标记数组use [j],如果use[j][i]的值为1,则说明达到最大重要性值时要执行第i个任务,则输出字符串name [i],输出完后就组成了任务清单;
F、继续:整个程序在一个循环里,如果用户对自己的计划不满意,或者想要做出什么改变,可以选择继续制作计划,也可以输入对应内容,则会跳出循环,直接退出程序。
[0005]本发明的优点在于:经本程序计算出来的计划一定是最优解,而且计算过程真正可以说是快如闪电。可能在任务量比较小的时候一般人可以直接判断出最优计划,然而当任务量增大时尤其是时间有限的情况下,本程序的优势则显露无疑。它可以让人减少鋳躇的时间,而最闻效地利用时间。
[0006]
【具体实施方式】
下面结合实例对本发明做进一步的描述。
[0007]—种高效计划制定程序的使用及计算方法,其所采取的使用步骤及计算方法如下:
A、选择语言:程序用户输入语言选择,支持汉语和英语两种语言,大大地扩大了用户面;
B、输入:输入程序所需要的信息:用户的计划工作时长、任务数量以及每一个任务的名称、任务的时间和任务的重要性打分;程序使用整实型变量存储工作时长、任务数量、每一个任务的时间和任务的重要性打分,使用一个字符型二维数组,存储每一个任务名的字符串。程序在Windows DOS环境下运行,输入存储十分快捷,可以在百万分之一秒内完成记录,操作流畅;
C、运算:根据输入的数据,计算在计划时间内所能完成的重要性的最大值,其具体实现的核心算法是动态规划的01背包算法,在算法内,把用户所拥有的时间作为背包,把工作任务作为要放入背包的物品,每个物品的价值则是每个任务的重要性,核心代码使用的是一维滚动数组进行动态规划运算。节省了程序运行空间,即使运算量再大也不会影响电脑的运行,对电脑的性能要求也很低。运算十分快捷,可以在I秒之内得出结果。具体的实现手段是,以一维数组(dp[241],因为最大时间长度为240分钟)的下标作为时间,数组里的每一个值在计算结束后存储的就是使用对应下标时间能够达到的最大重要性值。当一组数据录入时,得到当前任务的时间(tuse)和重要性(imp),此时遍历一次数组,当dp[i]<dp[1-tuse] +imp (i是遍历数组时用到的变量,指当前时间)
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1