小编tem*_*def的帖子

涉及一系列日志的Big-O证明

证明 在此输入图像描述

我把这个系列放到了总和中,但我不知道如何解决这个问题.任何帮助表示赞赏

math big-o logarithm

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

在线排序算法和外部排序算法有什么区别?

在线排序算法外部排序算法有什么区别?它们是相同的还是不同的?

sorting algorithm external-sorting online-algorithm

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

使用递归树渐近地求解 T(n) = 2T(n^(1/2)) + 1?

我需要解决复发

T(n) = 2T(n 1/2 ) + 1

我需要找到渐近时间复杂度。我正在使用递归树方法,但我被卡住了。我知道答案是 Θ(log n),但我不知道如何得出这个结论。请问这个复发怎么解决?

big-o recurrence time-complexity

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

1左移31(1 << 31)如何工作以获得最大int值?以下是我在网上发现的想法和一些解释

我对比特操纵相当新,我想弄清楚(1 << 31) - 1是如何工作的.

首先我知道1 << 31是

1000000000000000000000000000
Run Code Online (Sandbox Code Playgroud)

而且我知道它实际上是最小int值的补充,但当我试图找出(1 << 31) - 1时,我发现一个解释说明,它只是

10000000000000000000000000000000 - 1 = 01111111111111111111111111111111
Run Code Online (Sandbox Code Playgroud)

我几乎想要相信它,因为它真的很简单.但这真的发生了什么?如果不是,为什么它恰好是正确的?

我原来的想法是,真正的过程应该是:-1的两个补码是

11111111111111111111111111111111
Run Code Online (Sandbox Code Playgroud)

然后(1 << 31) - 1 =

(1)01111111111111111111111111111111
Run Code Online (Sandbox Code Playgroud)

最左边的1被放弃,然后我们有int的最大值.

我真的很困惑哪一个是对的.

bit-manipulation max bit twos-complement

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

错误:未知类型名称结构

我正在尝试用 C 解决康威的生命游戏。我编写了一个包含所有函数的 .h 文件,但在头文件中收到以下错误:错误:未知类型名称“矩阵”

这是头文件的开头,其中包含我的结构声明和第一个函数:

#include<stdio.h>
#include<string.h>
#define MAX 1000
struct matrix{
    int Val, Next;
};
void intro_date(int nr_elem, matrix a[MAX][MAX]){
    int x,y;
    printf("Enter the line and the column of the element which you wish to read within the matrix: \n");
    while(nr_elem){
        scanf("%d%d",&x,&y);
        a[x][y].Val=1;
        --nr_elem;
    }
}
Run Code Online (Sandbox Code Playgroud)

c

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

扫描声明后的逗号?

不是我的代码,而是来自这里.在read_data()函数中有一个scanf,后面还有我之前看不到的东西.它有什么作用?是STL吗?

scanf("%d %d\n", &a, &b), G[a].pb(b), deg[b]++;
Run Code Online (Sandbox Code Playgroud)

c++ scanf comma-operator

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

C++从vector <algorithm>和<functional>中删除字符串

对于学校作业,我需要通过使用来删除矢量中的紫色,这就是我想出的:

bool IsEqual(string s, string s2)
{
    if (s == s2)
    {
        return true;
    }
}

int main() {
    vector<string> coulours2 = { "red", "green", "blue", "orange", "purple", "orange", "black", "green" };
    vector<string>::iterator newEnd;
    newEnd = remove_if(coulours2.begin(), coulours2.end(), bind2nd(IsEqual, "purple"));
    colours2.erase(newEnd);
    cin.get();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是我遇到了很多错误,我认为我使用的是bind2nd错误.我该如何正确使用它?

c++ string functional-programming

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

当我写`char str [80];`时会发生什么?

我写的幕后会发生什么:char str[80];

我注意到我现在可以设置str = "hello";,也str = "hello world";可以在之后设置.第一次strlen(str)5,第二次是11;

但为什么?我以为在之后str = "hello";,索引5处的char变为null(str[5]变为'\0').这是不是意味着str现在的尺寸是6而且我不应该把它设置为"hello world"

如果不是,那么如何做strlensizeof每一次计算出正确的价值观?

c memory arrays string

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

什么时候用KMP算法好?

我知道 KMP 算法依赖于有类似于后缀的前缀的辅助数组。当上述条件不满足时,它不会有效,因为在辅助数组中包含全零。运行时间是 O(m + n) 吗?如果我是对的,在这种情况下什么是更好的子串算法?

string algorithm big-o substring knuth-morris-pratt

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

为什么 std::uniform_int_distribution 在不同系统中没有给出相同的答案?

代码示例:

#include <iostream>
#include <random>
using namespace std;

int main()
{
    mt19937 generator(0);
    uniform_int_distribution<int> distr(0, 100);

    for(auto i = 0; i < 10; ++i)
    {
         cout << distr(generator) << "\n";
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码在 Mac 和 Windows 上生成不同的数字,但替换uniform_int_distributionuniform_real_distribution修复该问题,并且生成的序列在两个平台上是相同的。

为什么会发生这种情况?

c++ random c++11

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