求诸如最大数此类数学程序的一个优化思路
c语言吧
全部回复
仅看楼主
level 1
码字骷髅 楼主
汗...偶是菜鸟....请各位勿扔砖...
做了一些数论方面的求最大数,或最大和,或最大积,或最优化结果这样题目,从来习惯是循环递增。但忽然今天有所醒悟,如果要求的最大化或最优化结果是随着数字递增而出现的,不如用循环递减,这样可以省了声明一些额外用来储存临时最大或最优值的变量,也减少了循环的次数,最重要的,省了“检验最大”的那部分代码。
举个很简单的例子,像求两个三位数之积刚好是一个回文积数(如80008,81218,63336),其最大的回文积数是什么?一般我们都习惯是从100开始循到999,但这样就要引入了临时储存变量,也要引入检验最大:“如果出现数字大过临时储存量,则代替它”这个环节,但如果我们是从递减的循环完成这个程序的话,就可以连这个环节也省了...
偶觉得如果像偶一样刚入门的菜鸟,都很习惯去循环递增暴力筛值,所以,很多时候试试循环递减,会省却很多功夫....
2011年01月08日 12点01分 1
level 1
码字骷髅 楼主
无聊~~
递减优于递增的场合我14岁就领悟了~~~
果然是菜鸟~~
2011年01月08日 12点01分 2
level 1
码字骷髅 楼主
回复:2楼
你怎么这样。能礼貌一点吗?我也只想说个想法啊,希望讨论而已..我也刚过11岁生日啊
2011年01月08日 12点01分 3
level 6
[拜][拜][拜]
2011年01月08日 14点01分 5
level 9
[汗][汗][汗]
2011年01月08日 14点01分 6
level 1
码字骷髅 楼主
为什么你们的反应那么奇怪啊?我觉得没错啊,把递增改递减后,最快效率提高了足足487ms。虽然知道可能很弱智,但往往这些技巧很有用。
看在新人发帖,给些有深度的评价指教下小弟吧....
2011年01月08日 14点01分 7
level 9
其实吧,我是个偷懒的人,对我来说,与其找个省力的算法,还不如汇编优化算了。当然,算法太垃圾弱智另当别论。。。
2011年01月08日 14点01分 8
level 1
码字骷髅 楼主
回复:8楼
汇编太暴力了吧...而且移植性问题怎么解决,总不能确保每个运行平台都一样吧...
2011年01月08日 14点01分 9
level 13
回复:8楼
算法优化才是王道,暴力汇编也不一定比得上编译器优化的。
2011年01月08日 15点01分 10
level 9
回复:10楼
算法优化的确是王道。
2011年01月08日 15点01分 11
level 11
这个我挖一下坟……有的时候请考察分布
递减我t过,请小心使用
2011年01月19日 12点01分 12
level 1
用汇编太落伍了,现在流行直接输入机器码,键盘都用不着了,只留两个键0和1就行了
2011年01月19日 16点01分 13
level 11
回复:13楼
看来乃还没有领悟小刀的好处
2011年01月20日 04点01分 14
level 13
路过[揉脸]
2011年01月20日 04点01分 15
level 13
木有验证码了,真高兴啊,喔嚯嚯,[我爱牛奶]
再顶下,庆祝以下
谢了良化哥[抛媚眼]
2011年01月20日 04点01分 16
level 15
回复:2楼
现在几岁了?领略到优化器的威力了么?
[瞌睡]
2011年01月20日 04点01分 17
level 11
回复:16楼
拉拉拉
2011年01月20日 04点01分 18
level 1
码字骷髅 楼主
回复:12楼
!!嗯嗯,的确有局限性!
什么叫t过?能介绍下你那次用递减引发了什么问题吗?
2011年01月21日 02点01分 19
level 11
回复:19楼
t是tle的缩写……超时(原来你是自由切题群众阿,真好
那个题目是USACO 3.1 humble,如果没有USACO帐号可以去nocow搜下题目试试看
原先t掉也不完全是分布的问题,代码写得比较糙
——————————————————————————————————
总之,对于涉及到序列的问题,尽量估计下分布
至于最优化问题,小心别陷入经验就好了吧

2011年01月21日 03点01分 20
1 2 尾页