Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tree 二叉树迭代_Tree - Fatal编程技术网

Tree 二叉树迭代

Tree 二叉树迭代,tree,Tree,如果我想执行从索引0到索引T的add查询,并且我有二进制值T。因此对于eg,我有0111010,因此在删除最右边的位后,它变成01110。以0为左,1为右。我每次向右添加元素,最后在索引T处添加元素。这是否意味着每当遇到1时我就访问位[]数组,还是有其他方法?看,我知道这个问题的来源。这是一个漫长的十月。请不要在现场比赛中提问。好吧,我知道你会迫切需要正确的逻辑。我非常努力地解决这个问题,经过多次尝试后,我得到了一个AC(感觉真好!)。不要考虑任何关于芬威克树的问题,而是为给定的计算写一个模拟。

如果我想执行从索引0到索引T的add查询,并且我有二进制值T。因此对于eg,我有
0111010
,因此在删除最右边的位后,它变成
01110
。以0为左,1为右。我每次向右添加元素,最后在索引T处添加元素。这是否意味着每当遇到1时我就访问位[]数组,还是有其他方法?

看,我知道这个问题的来源。这是一个漫长的十月。请不要在现场比赛中提问。

好吧,我知道你会迫切需要正确的逻辑。我非常努力地解决这个问题,经过多次尝试后,我得到了一个AC(感觉真好!)。不要考虑任何关于芬威克树的问题,而是为给定的计算写一个模拟。
Fdown(i) = (i & (i + 1))
做一个循环,就像

cout<<"\n\nEnter L : ";
cin>>l;
while(l > -1)
{
    cout<<bitset<32>(l)<<"\n";
    l = (l & (l+1))-1;
}
coutl;
而(l>-1)
{

coutI只是想知道如果这个方法不正确,如何修改它。我已经在这个问题上坚持了很长时间。这让我很沮丧。而且这都是关于学习的。我只是想知道我们是否只在1上访问数组?我尝试过这个方法,但问题是当L很长时十进制值太大。我只是在我的系统上尝试过。无论如何计算1的个数有什么问题?@sam First测试用例是51491,这对于long int来说不是太大。所有其他用例都可以通过将L作为long int来测试。要将二进制转换为十进制,可以使用以下方法:。计算一个不会有任何帮助,因为您不需要计算所有的数。当您完成程序时,请尝试使用诸如128、256之类的数字,257,255等。希望你能开始看到你需要的东西。非常感谢你的帮助。我知道你想说什么。我以前试过,但问题是位字符串到十进制的转换。对于小字符串,它可以通过STL来完成。但问题在于大字符串。我认为即使是long-long也不能正确地存储它们例如,考虑一个大约100位长度的字符串。十进制当量超过了18位数字,它比无符号长long所能容纳的还要多。有没有一种方法可以绕过它?“山姆,我不是说这会给你一个AC。我是说你试试这个,试着找出字符串中的1s和答案之间的关系。倒立答案与1的计数及其在字符串中的位置的关系。我分析了模式,知道你想说什么。谢谢。我也终于得到了AC。