解题思路:
利用递归思路,和满二叉树的性质,一个结点的左孩子会等于 该节点i*2 右孩子会等于i*2+1,而左孩子又会有左右孩子,右孩子也会有左右孩子
则可以利用递归,递归的出口就是 左孩子 都右孩子 大于n 利用count变量来记录
注意事项:
参考代码:
#include<iostream>
#include<string>
using namespace std;
void digui(int left,int right,int n,int& count)
{
if(left<=n)
{
count++;
digui(left*2,left*2+1,n,count);
}
if(right<=n)
{
count++;
digui(right*2,right*2+1,n,count);
}
}
void test01()
{
int m,n;
while(cin>>m>>n &&(m!=0&&n!=0))
{
int count =1;
int left =2*m;
int right =2*m+1;
digui(left,right,n,count);
cout<<count<<endl;
}
}
int main()
{
test01();
return 0;
}
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题9.8 (C语言代码)浏览:635 |
C语言训练-求素数问题 (C语言代码)浏览:989 |
C语言程序设计教程(第三版)课后习题12.5 (C语言代码)浏览:875 |
震宇大神的杀毒软件 (C语言代码)浏览:1348 |
A+B for Input-Output Practice (C++代码)浏览:632 |
【排队买票】 (C语言代码)浏览:944 |
求圆的面积 (C语言代码)浏览:1756 |
C语言训练-自由落体问题 (C语言代码)浏览:650 |
C语言程序设计教程(第三版)课后习题5.7 (C语言代码)浏览:645 |
1035 题解浏览:875 |