小编Pro*_*mer的帖子

二叉树的高度

请考虑以下代码:

public int heightOfBinaryTree(Node node)
{
    if (node == null)
    {
        return 0;
    }
    else
    {
        return 1 +
        Math.max(heightOfBinaryTree(node.left),
            heightOfBinaryTree(node.right));
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道这段代码背后的逻辑推理.人们是怎么想出来的?有些人有归纳证明吗?

此外,我想到只用二叉树的根作为参数获取二叉树的高度.以前的方法比我的好吗?为什么?

java algorithm tree

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

cuda内核调用是同步还是异步

我读到可以使用内核启动来同步不同的块,即,如果我希望所有块在继续操作2之前完成操作1,我应该将操作1放在一个内核中,将操作2放在另一个内核中.这样,我就可以实现块之间的全局同步.但是,cuda c编程指南提到内核调用是异步的,即.CPU不会等待第一个内核调用完成,因此,CPU也可以在第一个内核完成之前调用第二个内核.但是,如果这是真的,那么我们就不能使用内核启动来同步块.请让我知道我哪里出错了

cuda nvidia

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

如何将thrust :: device_vector <int>强制转换为原始指针

我有一个推力device_vector.我想将它转换为原始指针,以便我可以将它传递给内核.我怎么能这样做?

thrust::device_vector<int> dv(10);
//CAST TO RAW
kernel<<<bl,tpb>>>(pass raw)
Run Code Online (Sandbox Code Playgroud)

cuda gpu thrust

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

在Python中,read()或readlines()更快吗?

我想在我的代码中读取一个巨大的文件.read()或readline()更快.循环怎么样:

for line in fileHandle
Run Code Online (Sandbox Code Playgroud)

python io

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

$(OutDir)的含义

我正在查看我的visual studio项目的属性并看到以下内容:

$(OutDir)\$(ProjectName).exe
Run Code Online (Sandbox Code Playgroud)

我很好奇视觉工作室如何知道outdir的价值,我怎么能看到这个价值.而且,这是哪种语言,例如C#,python?换句话说,$(OutDir)\$(ProjectName).exe写的是什么语言

msbuild environment-variables visual-studio

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

korn和bash shell之间的区别

我是Unix新手.目前,我被要求了解KornShell(ksh)Bash shell.有人可以给我一个关于这两个的简短概述吗?

术语" shell "是" 终端 "的同义词吗?

我知道我可以在线阅读有关这两个文件.但我相信经验丰富的Unix程序员的概述将帮助我更好地理解.

unix bash shell scripting ksh

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

用户定义类型的优先级队列

我有以下结构

struct node{
   float val;
   int count;

}
Run Code Online (Sandbox Code Playgroud)

我有这个结构的几个对象.现在,我想将这些对象插入到STL的优先级队列中,以便优先级队列按计数对项目进行排序.有关如何这样做的任何想法?优选地,最小堆是优选的.我知道如何对原始数据类型而不是结构进行上述操作

c++ priority-queue min-heap

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

我应该使用BFS,DFS进行树遍历还是有序,后期订购,预订?

这个问题对于专家来说可能很简单,但对于像我这样的初学者来说这很重要.我的问题是有没有涉及树遍历的问题,可以通过BFS,DFS解决,而不是按顺序,预订等.换句话说,每当我看到树问题时,我是否应该只考虑3树遍历方法,或者也考虑BFS,DFS

algorithm graph

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

从集合中的任意索引获取元素

我有一组类型set<int>,我想得到一个不是开始的地方的迭代器.

我正在做以下事情:

set<int>::iterator it = myset.begin() + 5;
Run Code Online (Sandbox Code Playgroud)

我很好奇为什么这不起作用以及将迭代器放到我想要的地方的正确方法是什么.

c++ stl

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

动态编程问题

马戏团正在设计一个塔式例程,由站在彼此肩膀上的人组成.出于实际和美学的原因,每个人必须比他或她下面的人更短更轻.考虑到马戏团中每个人的身高和体重,写一种计算这种塔中最大可能人数的方法.

示例:
输入(ht,wt):( 65,100)(70,150)(56,90)(75,190)(60,95)(68,110)
输出:最长的塔长度为6,包括从上到下:(56,90)(60,95)(65,100)(68,110)(70,150)(75,190)

有人向我建议如下:可以按如下方式进行:

  1. 按重量递减顺序对输入进行排序,找到最长的降序序列.
  2. 按高位降序对输入进行排序,找到最长的减重序列.

最多1和2.

我不明白为什么我们需要同时执行第1步和第2步.不能只做1并找到答案.如果没有,请举例说明只做第1步没有回答?

algorithm

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