随笔分类 -  他山之石

摘要:#include<cstdio>#include<cstring>char c[50];int i,l;double x,y;int main(){ while(scanf("%s",c)!=EOF) { printf("%s [8] = ",c); l=strlen(c)-1; x=0; y=1; for(i=l;i>1;i--) { x=((c[i]-'0')*y+x)*125; y*=1000; } x/=y; i=0; while(x) { c[i]=int(x*=10)%10+'0' 阅读全文
posted @ 2011-09-03 19:50 SunnyDay2015 阅读(373) 评论(0) 推荐(0) 编辑
摘要:动态规划是用空间换时间的一种方法的抽象。其关键是发现子问题和记录其结果。然后利用这些结果减轻运算量。比如01背包问题。/* 一个旅行者有一个最多能用M公斤的背包,现在有N件物品,它们的重量分别是W1,W2,...,Wn,它们的价值分别为P1,P2,...,Pn.若每种物品只有一件求旅行者能获得最大总价值。输入格式:M,NW1,P1W2,P2......输出格式: X */因为背包最大容量M未知。所以,我们的程序要从1到M一个一个的试。比如,开始任选N件物品的一个。看对应M的背包,能不能放进去,如果能放进去,并且还有多的空间,则,多出来的空间里能放N-1物品中的最大价值。怎么能保证总选择是最大价 阅读全文
posted @ 2011-03-10 21:48 SunnyDay2015 阅读(925) 评论(0) 推荐(0) 编辑
摘要:算法设计思想:如果J是作业的可行子集,那么可以使用下述规则来确定这些作业中的每一个作业的处理时间:若还没给作业i分配处理时间,则分配给它时间片[a-1,a],其中a应尽量取最大且时间片[a-1,a]是空的。此规则就是尽可能推迟对作业i的处理。于是,在将作业一个一个地装配到J中时,不必为接纳新作业而去移动J中那些已分配了时间片的作业。如果正被考虑的新作业不存在像上面那样定义的a,这个作业就不能计人J。各作业的效益值放在P[ ]中,并按效益值非增次序排列,期限值放在D[ ]中,F[ ]用于存放最大期限值,J[ ]用于存放最优解,Q[ ]用于存放作业的调度次序。 算法描述: line procedu 阅读全文
posted @ 2011-03-08 21:34 SunnyDay2015 阅读(3176) 评论(0) 推荐(1) 编辑
摘要:一 问题描述 对一个较大规模的数组进行排序,分别使用冒泡,快速,和堆排序,比较这三种方法的效率.二 算法分析与设计 三种算法要比较哪一个效率更高,必须使用相同的数组进行排序,而且数组的元素个数要相当大,这样才能够看处它们执行效率的差别。要输入一个很大的数组显然不符合现实,因为工程太庞大了,所以我们用随机产生函数:rang()来产生所要的数组,虽然每次产生的数组都不一样,但是随机性更能体现出一个算法执行的好和坏。我们并不是就执行一次,而是通过多次的执行得出结论。 数组产生了以后,接下来的事情就是用每一种排序方法对产生的数组进行排序,同时记录下排序所需要的时间,我们通过所花时间的多少来比较哪个算法 阅读全文
posted @ 2011-02-20 11:46 SunnyDay2015 阅读(1933) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示