2012年(158)
分类: C/C++
2012-11-23 15:27:25
网友评论2012-11-23 15:36:18
周星星
http://msdn.microsoft.com/en-us/library/aa289157(VS.71).aspx
double KahanSum( const double A[], size_t n )
{
double sum = 0;
double C = 0.0;
for( size_t i=0; i!=n; ++i )
{
double Y = A - C;
网友评论2012-11-23 15:35:47
周星星
// 暴力求解法(效率不行)
//假设数据为 1 2 3 3 4 5
//那么只有以下几种分法:
//1 2 3 | 3 4 5
//1 2 4 | 3 3 5
//1 2 5 | 3 3 4
//1 3 3 | 2 4 5
//1 3 4 | 2 3 5
//1 3 5 | 2 3 4
//1 4 5 | 2 3 3
//分别计算每一种分法的差值,取最小者。
#include <cassert>
#include <algorithm>
// 最差情况下(无重复数字),时间复杂度是O( n! / (n/2)! / (n/2)! / 2 )
// 假设n为6,则时间复杂度是O( (6*5*4)/(3*2*1)/2 ) = 10
bool nextpermutation( int buf[], size