标签: computer-science

如果知道二叉树的节点数,如何找到它的最小高度?

设 n 为二叉树的节点数,那么找出二叉树的最小高度的通用函数项是什么?

我认为n=floor(log2(n))+1。但是,我想,我错了。

tree computer-science binary-tree discrete-mathematics data-structures

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

15 个拼图的不相交模式数据库

我有一些疑问。1.如何为15个拼图创建不相交的模式数据库?2.模式数据库(5-5-5)或(6-3-2)是什么意思?

computer-science artificial-intelligence

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

学习计算机网络的资源

James Kurose 和 Keith Ross 向我推荐了计算机网络,这是一种自上而下的方法。与此相关的是,我听到过好的和坏的批评,我想问问你的看法。我的意思是,我希望在花钱之前先了解一下这本书。谢谢!

networking computer-science

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

最大流量寻找最有利可图的安排

\n

a_1, ..., a_n演员。每个演员都有成本c_1, ..., c_n。此外,我们还有投资者,b_1,..., b_m每个投资者都愿意投入q_j给我们的电影投钱。一个投资者会在我们的电影中投入资金,前提是他所有喜欢的演员都会出现在我们的电影中。\n 当然,我们可能有多个投资者。找到参与者/投资者的子集以使我们的利润最大化(即投资总和减去工资总和)

\n
\n\n

基本上,解决方案是将某个顶点s通过权重边连接到每个投资者q_i。接下来,我们将每个投资者与其偏爱的参与者联系起来infinity。最后,我们将每个参与者连接到某个带有权t重边的顶点c_i

\n\n

然后,我们寻找最大流量。

\n\n

我的问题是:

\n\n
    \n
  • 为什么它有效?
  • \n
  • 有人告诉我,为了找到演员/投资者的这些子集,我们需要查看最小剪辑(S,T),然后我们有picked_investors = S \xe2\x88\xa9 investorspicked_actors = S \xe2\x88\xa9 actors。你能解释一下吗?
  • \n
  • 我们不能只看流程去哪里找到这两个子集吗?
  • \n
\n

algorithm computer-science graph

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

求序列的周期

我想解决这个问题:

对于给定的序列 ,a[0], a[1], a[2],..., a[n-1]请找到该序列的“周期”。
周期是对于所有有效 i 满足 a[i] = a[i+k] 的最小整数 k (k >= 1),并且 k 是 n 的除数。

我当前的解决方案是计算 n 的所有除数(这是 k)并测试所有 k,但这需要O(n * d(n)). 我认为这很慢。
有没有高效的算法?

arrays algorithm computer-science period number-theory

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

将十六进制位转换为字节

我试图理解

256 位十六进制表示为 32 个字节,即 0-9 或 AF 范围内的 64 个字符

32 字节的字符串怎么可能是 0-9AF 范围内的 64 个字符?

32字节是什么意思?

我假设位表示数字 0 或 1,因此 256 位将是 256 个数字 0 或 1。

我知道1字节等于8位,那么32字节是否是0、1、2、3、4、5、6或7(即8个不同值)的32位数字?

我确实对不同的基数有所了解(例如,二进制有0和1,十进制有0-9,十六进制有0-9和AF等),但我仍然无法理解为什么十六进制的256位可以是32字节或 64 个字符。

我知道这是计算机科学的基础知识,所以我必须阅读这一点,但是你能给出一个简短的解释吗?

byte computer-science bit radix

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

vscode 无法打开源文件“iostream”

我是 C++ 和 vscode 的新手,所以我不确定如何解决这个问题。我试图通过https://code.visualstudio.com/docs/cpp/config-clang-mac 上的教程,但如果没有 iostream、vector 和字符串错误。我还在这里看到了一些帖子,指出我应该在配置中更改 includePath 字符串数组,但是将路径添加到我的项目文件夹似乎并没有消除这些错误。我在这里不知所措,因为到目前为止我所看到的一切仍然无法正常工作。

导致这些错误的代码已直接从上面的教程中复制粘贴:

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main()
{
    vector<string> msg {"Hello", "C++", "World", "from", "VS Code", "and the C++ extension!"};
    
    for (const string& word : msg)
    {
        cout << word << " ";
    }
    cout << endl;
}
Run Code Online (Sandbox Code Playgroud)

在前三行中,我收到了错误"cannot open source file {the included import's name}"。编译器指出#include errors detected. Please update your includePath. Squiggles are disabled for this translation unit (/Users/rjc/projects/helloworld/helloworld.cpp).C/C++(1696) …

c++ macos computer-science include-path visual-studio-code

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

我们如何计算这段代码片段中缓存的读取/未命中次数?

鉴于我目前正在学习的这本教科书中的这段代码片段。Randal E. Bryant, David R. O'Hallaron - 计算机系统。A Programmer's Perspective [3rd ed.] (2016, Pearson) (全球版,所以书中的练习可能是错误的。)

for (i = 31; i >= 0; i--) {
    for (j = 31; j >= 0; j--) {
        total_x += grid[i][j].x;
    }
}

for (i = 31; i >= 0; i--) {
    for (j = 31; j >= 0; j--) {
         total_y += grid[i][j].y;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是给出的信息

最近热门游戏 SimAquarium 的核心是一个计算 512 藻类平均位置的紧密循环。您正在一台具有 2,048 字节直接映射数据缓存和 32 字节块 (B = 32) 的机器上评估其缓存性能。

  struct algae_position {
         int …
Run Code Online (Sandbox Code Playgroud)

computer-science caching cpu-architecture cpu-cache

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

是否有任何二进制值没有精确的十进制表示?

我们都知道,有些十进制值在二进制中没有精确的表示。

例如十进制值0.1

在 IEEE 浮点格式中,它可以具有不同的表示形式,具体取决于您要专用于表示浮点值的位数。

单精度(32 位)

  • 十六进制:0x3DCCCCCD
  • 二进制:1.10011001100110011001101×10 -4
  • 十进制:0.10000 00014 90116 11938 47656 25

双精度(64 位)

  • 十六进制:0x3FB999999999999A
  • 二进制:1.1001100110011001100110011001100110011001100110011010×10 -4
  • 十进制:0.10000 00000 00000 00555 11151 23125 78270 21181 58340 45410 15625

扩展精度(80 位)

  • 十六进制:0x3FFBCCCCCCCCCCCCCCCD
  • 二进制:1.100110011001100110011001100110011001100110011001100110011001101×10 -4
  • 十进制:0.10000 00000 00000 00000 13552 52715 60688 05425 09316 00108 74271 39282 22656 25

换句话说,十进制值0.1在二进制中没有精确的表示,它是无休止的重复值:

0.0 0011 0011 0011 0011 0011 0011 0011 …
Run Code Online (Sandbox Code Playgroud)

floating-point precision computer-science

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

什么时候使用 TreeSet 比使用 HashSet 更快?

我一直在阅读有关此主题的内容,到目前为止,根据我对添加、删除和搜索操作的理解,HashSet 速度更快,时间复杂度为 O(1),而 TreeSet 对于相同操作的时间复杂度为 O(log n)。当迭代元素时,HashSet 和 TreeSet 的时间复杂度都是 O(n)。

那么当 TreeSet 比 HashSet 更快时,什么是用例呢?

java computer-science data-structures

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