小编MSa*_*ers的帖子

如何确定给定的有向图是否为树

程序的输入是图中的边集.例如,考虑以下简单有向图:

a -> b -> c
Run Code Online (Sandbox Code Playgroud)

该图的边集是

{ (b, c), (a, b) }
Run Code Online (Sandbox Code Playgroud)

因此,将有向图作为一组边,如何确定有向图是否为树?如果它是树,那么树的根节点是什么?

首先,我在看你如何表示这个图,邻接列表/邻接矩阵/其他什么?如何利用您选择的表示来有效地回答上述问题?

编辑1:

有些人正在考虑使用DFS进行循环检测,但问题是从哪个节点启动DFS.由于它是有向图,我们无法从随机节点启动DFS,例如,如果我从顶点'c'开始DFS,它将不会继续进行,因为没有后边缘去任何其他节点.这里的后续问题应该是如何确定这棵树的根源.

algorithm tree directed-graph

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

是否可以在C++中使用map <string,string []>?

我试图通过转换我在java中编写的一些程序来学习C++.一种是加密程序,它接受文本输入并使其看起来像DNA(AGCTGTGCT ...).我可以使用256个密码子(每个4个碱基)加密64个字符.("A"="TGGC","B"="ATGC"...)在java中,我创建一个hashmap<String, String[]>键,其中键是要加密的字符,值是4个字符串的数组,其中每个字符串是一个随机选择的密码子替换加密的字符.

在C++中,我试图使用一个地图来做同样的事情,但它给出了一个我不明白的错误.这是我尝试制作密码子表的代码:

// iterate through the characters and select 4 codons from the list
for(int i = 0; i < 64; i++){
    codonTable[charList[i]][0] = originalCodonList[4 * i];
    codonTable[charList[i]][1] = originalCodonList[4 * i + 1];
    codonTable[charList[i]][2] = originalCodonList[4 * i + 2];
    codonTable[charList[i]][3] = originalCodonList[4 * i + 3];

    }
}
Run Code Online (Sandbox Code Playgroud)

charList是包含64个可编码字符的数组(它们实际上是字符串),originalCodonList是一个包含256个密码子的字符串数组.我已经尝试了几种方法将4个密码子分配给地图中的字符串数组,但似乎没有任何效果.这会产生最少的错误垃圾邮件.这是我编译时的输出:

在/usr/include/c++/4.6/map:61:0中包含的文件中,来自Genencrypt.cpp:4:/usr/include/c++/4.6/bits/stl_map.h:在成员函数'std :: map <中_Key,_Tp,_Compare,> _Alloc> :: mapped_type&std :: map <_Key,_Tp,_Compare,_Alloc> :: operator [](const key_type&)> [with _Key = std :: basic_string,_Tp = std …

c++ string map

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

为什么/ Qvec-report:2什么都不返回?(MSVC 2012)

我尝试了/ Qvec-report:2选项来查看MSVC自动矢量化器是否有用.不幸的是,我没有得到任何结果,积极或消极:

>  Microsoft (R) C/C++ Optimizing Compiler Version 17.00.60610.1 for x86
1>  Copyright (C) Microsoft Corporation.  All rights reserved.
1>  
1>  cl /c /Zi /nologo- /W3 /WX- /O2 /Ob2 /Oi /Oy /GL /D WIN32 /D _SCL_SECURE_NO_WARNINGS /D _CRT_SECURE_NO_WARNINGS /D NDEBUG /D _LIB /D _UNICODE /D UNICODE /Gm- /EHsc /MD /GS /Gy /arch:SSE2 /fp:fast /Zc:wchar_t /Zc:forScope /Yu"stdafx.h" /Fp"Release\(redacted).pch" /Fo"Release\\" /Fd"Release\vc110.pdb" /Gd /TP /analyze- /errorReport:prompt  /Qvec-report:2 (redacted).cpp
1>cl : Command line warning D9035: option 'nologo-' has been deprecated and will be …
Run Code Online (Sandbox Code Playgroud)

visual-c++

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

如果头文件被更改然后还原,如何停止/欺骗cmake不重建?

如果我不小心更改了头文件,保存它,然后将其更改回来并重新保存,如何阻止cmake检测到更改并重建其所有依赖项.通常我甚至不知道它在我重新运行之后才被修改make并开始重建过程.

我尝试了一些天真的手动时间戳更改,但没有运气.

要清楚,我正在寻找一个能够解释cmake使用规则的黑客或者某人.使用命令行gcc/clang,环境是linux/os x.

c++ makefile cmake

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

在两个整数之间交换最右边的N位

在现场C++编码访谈期间询问了这个问题.在那次采访中我没有提供一个好的答案.所以我希望在堆栈溢出时得到人们的反馈和建议.现在我已经有更多的时间来提出解决方案了,我相信我写了一个不错的解决方案.我认为这可以正常工作ab引用不同的整数.如果a并且b引用相同的整数,那么该整数将被破坏为0.

void SwapRightMostNBits(int& a, int& b, unsigned int n){

    if (n>31) { n=31; }
    int mask=static_cast<int>(pow(2,n)-1);

    a ^= (b & mask);
    b ^= (a & mask);
    a ^= (b & mask);
}
Run Code Online (Sandbox Code Playgroud)

c++ bit-manipulation

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

C++中的延迟构造函数

我一直在审查一些看起来像这样的代码:

class A; // defined somewhere else, has both default constructor and A(int _int) defined
class B
{
public:
    B(); // empty
    A a;
};

int main()
{
     B* b;
     b = new B();
     b->a(myInt); // here, calling the A(int _int) constructor,
     //but default constructor should already have been called
}
Run Code Online (Sandbox Code Playgroud)

这有用吗?在调用默认值后调用特定的构造函数?

c++ constructor default

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

C typedef和指向struct的指针

如果我有以下内容:

typedef struct _MY_STRUCT
{
   int a;
   float b;
} MY_STRUCT, *PMYSTRUCT
Run Code Online (Sandbox Code Playgroud)

怎么*PMYSTRUCT办?它现在是我需要声明的指针类型还是只能指向_MY_STRUCT我可以使用的指针?

我知道这MY_STRUCT是一种需要按如下方式使用的新类型:

MY_STRUCT str;
str.a = 2;
Run Code Online (Sandbox Code Playgroud)

那怎么样*PMYSTRUCT

c struct typedef

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

Visual Studio 2010选择下载版本?(86/64)

一般想知道是否有多个版本的Visual Studio 2010下载,即我只能找到x86并且不确定这是否是我想要的Win7 x64版本[我正在运行]

是否有多个版本可用,或者只是安装x64组件的唯一版本x86?

64-bit x86 visual-studio-2010

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

包括.h文件

假设我有两个.h文件:啊和Bh此外,啊包括Bh本身:

Bh - 定义了B类.

class B {
  ...
};
Run Code Online (Sandbox Code Playgroud)

- 定义了A类,它使用了B类.

#include B.h

class A {
  void SomeFunction(const B& b);
};
Run Code Online (Sandbox Code Playgroud)

现在,我有一些.cpp文件,它同时使用A和B类(B类不仅可以用在A :: SomeFunction(B)中)

从设计模式和编码风格的角度来看,包含Ah和Bh(而不仅仅是Ah)的优点是什么?

c++ coding-style

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

是否需要构建boost.signals2库?

我的系统在构建boost库时遇到了问题.据我所知,大多数boost库(幸运的是)只是不需要构建的头文件(有一些例外).是否需要构建boost :: signals2库?boost.signals2库是否依赖于boost.signals库?

c++ boost boost-signals boost-signals2

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