自信且呆滞68


私信TA

用户名:dotcpp0738265

访问量:1118

签 名:

等  级
排  名 3536
经  验 1909
参赛次数 0
文章发表 21
年  龄 0
在职情况 学生
学  校 景德镇学院
专  业 网络工程

  自我简介:

我一定会做出最好玩的游戏

解题思路:

利用递归思路,和满二叉树的性质,一个结点的左孩子会等于 该节点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 人评分

  评论区

  • «
  • »