wayne
发表于 2010-5-20 11:13:11
呵呵,我的占用了很多空间,我正在编译boost库,打算用用tuple,看看效果如何
这么多高级语言都有tuple函数,应该有其存在的理由吧,唯独C++ 没有。。。。
wayne
发表于 2010-5-20 11:17:04
查了文档,tuple库只是一堆头文件,不用编译即可拿来使用
gxqcn
发表于 2010-5-20 11:29:32
库只是为了减少重复劳动,简单的问题最好是直接解决。
wayne
发表于 2010-5-20 11:49:21
嗯,老大教训的对。
我最近在学STL和boost呢,这不就把问题往这边想吗
gxqcn
发表于 2010-5-20 12:00:24
千万别说“教训”,我们只是在交流看法。
不管什么库,也是靠人写的,优秀的库不外乎用C及汇编,
所以不存在用库就更快的说法,
除非是库所用算法比自己写的更优秀。
学习STL和boost还是很不错的,
通过阅读大师级的源代码,
对提高自身算法及编码水平是很有帮助的。
gxqcn
发表于 2010-5-20 20:23:48
38# gxqcn
再次小优化:#include <stdio.h>
#include <time.h>
int main(int argc, char* argv[])
{
unsigned long n, i, v0, v9, d, m;
double s0, s9;
time_t sec;
d = 1;
m = 9;
for ( i=1; i<9; ++i )
{
d = d * 10;
m = 9;
}
v0 = 1;
v9 = 0;
for ( n=1; 10!=n; ++n )
{
s9 = s0 = 0.0;
--m;
do
{
// v9: 下一个含有9的数字
v9 += 9;
do
{
s0 += 1.0 / v0;
} while ( v9 != ++v0 );
// v0: 下一个不含有9的数字
for ( ++v0, i=1; n!=i && 0==--m; ++i )
{
v0 += d;
m = 9;
}
do
{
s9 += 1.0 / v9;
} while ( v0 != ++v9 );
} while ( n != i );
time(&sec);
printf( "n = %u\t%.24s\n", n, ctime(&sec) );
printf( "s0 = %.15f\ns9 = %.15f\ns0/s9 = %.15f\ns0+s9 = %.15f\n\n", s0, s9, s0/s9, s0+s9 );
}
return 0;
}
chyanog
发表于 2010-5-20 20:43:30
41# wayne
f :=
Module[{temp = Tuples, x - 1], t},
{t = Sum, {i, 8}],
HarmonicNumber - HarmonicNumber - t
}
]
或(*Total@Sum*)
我用你的思路又改写了一下,效率稍有提高,估计是用加法和乘法替代纯函数调用可以更快的缘故吧。
无心人
发表于 2010-5-21 08:32:44
:Q:
结果和我的不一样啊
无心人
发表于 2010-5-21 08:35:07
看错了,一样的
无心人
发表于 2010-5-21 08:46:18
另外一种思路就是,用cache保存预判信息
不知道,谁写一下,应该速度比较快吧
页:
1
2
3
4
5
[6]
7
8
9
10