小编tot*_*oto的帖子

最快的最小生成树算法

http://en.wikipedia.org/wiki/Minimum_spanning_tree

我希望将最小生成树算法与最佳算法进行对比.有人知道我在哪里可以找到这些算法的C++实现吗?我叮叮当当地用谷歌搜索,但没有找到任何东西.如果这些算法是最好的,肯定必须在某处进行C++实现?

迄今为止最快的最小生成树算法是由David Karger,Philip Klein和Robert Tarjan开发的,他们发现了一种基于Borůvka算法和反向删除算法的线性时间随机算法.[2] [3] Bernard Chazelle最快的非随机算法基于软堆,即近似优先级队列.[4] [5] 其运行时间为O(mα(m,n)),其中m是边数,n是顶点数,α是Ackermann函数的经典函数逆.函数α增长非常缓慢,因此对于所有实际目的,它可以被认为是不大于4的常数; 因此Chazelle的算法非常接近线性时间.如果边权重是具有有界位长的整数,则确定性算法已知具有线性运行时间.[6] 对于一般权重是否存在具有线性运行时间的确定性算法仍然是一个悬而未决的问题.然而,Seth Petie和Vijaya Ramachandran已经发现了一种可证明最优的确定性最小生成树算法,其计算复杂性未知.[7]

我已经测试了Boost C++的图算法.

c++ minimum-spanning-tree

9
推荐指数
1
解决办法
7119
查看次数

关于我在C++代码中从未见过的特殊运算符的一些问题

我已经下载了2008年6月的Phoenix SDK(编译器工具),当我正在阅读Hello示例的代码时,我真的感到迷茫.

public
ref class Hello
{
//--------------------------------------------------------------------------
//
// Description:
//
//    Class Variables.
//
// Remarks:
//
//    A normal compiler would have more flexible means for holding
//    on to all this information, but in our case it's simplest (if
//    somewhat inelegant) if we just keep references to all the
//    structures we'll need to access as classstatic variables.
//
//--------------------------------------------------------------------------

static Phx::ModuleUnit                 ^ module;
static Phx::Targets::Runtimes::Runtime ^ runtime;
static Phx::Targets::Architectures::Architecture       ^ architecture;
static Phx::Lifetime                   ^ …
Run Code Online (Sandbox Code Playgroud)

c++ syntax c++-cli

3
推荐指数
3
解决办法
721
查看次数

Kruskal的C++算法

我正在寻找C++ Kruskal实现来对我自己的基准测试......如果你知道一些好的,请分享!

c++ performance graph-algorithm kruskals-algorithm

2
推荐指数
1
解决办法
1178
查看次数

使用CreateProcess与相对路径

是否可以传递相对路径来创建我的子进程?这段代码将编译,但它会出错,因为我使用的是相对路径.

void Cminivideo3App::creerChildProcess(void)
{
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );

    // Start the child process. 
  int retvalue =   CreateProcess( TEXT("\..\Debug\traitement.exe"),   // No module name (use command line)
        NULL,        // Command line
        NULL,           // Process handle not inheritable
        NULL,           // Thread handle not inheritable
        FALSE,          // Set handle inheritance to FALSE
        0,              // No creation flags
        NULL,           // Use parent's environment block
        NULL,           // Use parent's starting directory 
        &si,            // Pointer to …
Run Code Online (Sandbox Code Playgroud)

c++ windows winapi process

2
推荐指数
2
解决办法
3243
查看次数

为什么这个结构32的大小?

这是结构.

//Structure pour communiquer les paramètres de traitement à travers le MMF
struct params_traitement_mmf
{
    int brilliance;
    double contraste;
    char convolution[9];
};
Run Code Online (Sandbox Code Playgroud)

这是我显示此结构大小的代码:

    char valeur[10];
    sprintf(valeur, "%d", sizeof(params_traitement_mmf));
    MessageBoxA(NULL, valeur, "rien", MB_OK);
Run Code Online (Sandbox Code Playgroud)

MessageBox显示32.谢谢!

c++

2
推荐指数
1
解决办法
277
查看次数

哪个更具可读性(C++ =)

int valueToWrite = 0xFFFFFFFF;
static char buffer2[256];
int* writePosition = (int* ) &buffer2[5];
*writePosition = valueToWrite;

//OR
* ((int*) &buffer2[10] ) = valueToWrite;
Run Code Online (Sandbox Code Playgroud)

现在,我问你们哪一个你觉得更具可读性.涉及临时变量或一步技术的两步技术?

不要担心优化,他们都优化到同一个东西,你可以在这里看到.告诉我哪一个更易读.

or  DWORD PTR ?buffer2@?1??main@@9@4PADA+5, -1
or  DWORD PTR ?buffer2@?1??main@@9@4PADA+10, -1
Run Code Online (Sandbox Code Playgroud)

c c++

1
推荐指数
2
解决办法
531
查看次数

这可以仅通过递归来完成吗?

我被困在这个 CodingBat递归问题上:

给定一个字符串,递归返回一个"已清理"的字符串,其中相同的相同字符已减少为单个字符.所以"yyzzza"会产生"yza".

stringClean("yyzzza") ? "yza"
stringClean("abbbcdd") ? "abcd"
stringClean("Hello") ? "Helo"
Run Code Online (Sandbox Code Playgroud)

我可以使用循环来解决它,但这是不允许的,因为问题应该是使用递归来解决的.有没有办法解决这个问题而不使用循环并只使用递归?没有全局变量,没有循环.我甚至想过在参数中编码一些信息,但我认为这也是作弊.

我之前的程序没有while循环,我只能得到一半的答案.基本上,当我使用字符串参数调用我的函数时,我检查了前2个字符.如果它们是相同的,我将返回该字符并再次使用两个字符小的字符串调用该函数.但是,相同连续字符中的3个或4个字符串总是会使我的算法失败.

public String stringClean(String str) {

    if (str.length() == 0)
        return "";

    if (str.length() > 1) {

    int counter = 1;


      char a = str.charAt(0);
      char b = str.charAt(1);

       if (a == b)
       {
          while (str.length() > 1)
          {
             a = str.charAt(0);
             b = str.charAt(1);

             if (a != b) break;

             counter++;
             str = str.substring(1);


          }

           return a + stringClean( str.substring(1) ) ;
       }

    }

    return str.charAt(0) …
Run Code Online (Sandbox Code Playgroud)

java recursion

1
推荐指数
1
解决办法
687
查看次数