以下是我从链接http://progspedia.blogspot.com/2011/05/679-dropping-balls.html#comment-form
复制的代码#include<stdio.h>
int main()
{
int t,D,I,P,i,j;
//freopen("in.txt","r",stdin);
while(scanf("%d",&t)==1&&t>0)
{
for(i=0;i<t;i++)
{
scanf("%d%d",&D,&I);
P=1;D--;
for (j=0;j<D;j++)
{
P= I&1 ? (P<<1) : (P<<1)+1;
I=(I+1)>>1;
}
printf("%d\n",P);
}
}
return 0;
}
代码运行完美,但我不明白这段代码如何跟踪我们必须在第1级之后去哪个子树的东西。如果有人帮助我,那对我来说非常有帮助。
问题的链接是http://uva.onlinejudge.org/index.php?option=onlinejudge&page=show_problem&problem=620
答案 0 :(得分:1)
P
跟踪特定节点(以及子树)
这里做出了遍历决定。
P= I&1 ? (P<<1) : (P<<1)+1;