POJ 2756 二叉树 解题报告

POJ 2756 二叉树 解题报告

编号:2756

 

考查点:简单递归,简单数学题

 

思路:第一反应是非递归算法,熟悉二叉树的性质的一眼就看出来是每次除2的关系,然后一次编译通过,一次AC,后来看了下递归算法,原来是两个变量的递归,仅仅12行代码.

 

提交情况:10分钟,递归与非递归算法均实现,一次AC.递归为16MS,非递归0MS

 

Source Code

 //POJ Grids 2756 Cycle Solution 

#include  < iostream >
using   namespace  std;

int  a[ 20 ];
int  b[ 20 ];

bool  ishave( int  n)
{
    
for  ( int  i = 0 ;b[i] > 0 ;i ++ )
    {
        
if  (b[i] == n)
        {
            
return   true ;
        }
    }
    
return   false ;
}

int  main()
{
    
int  x,y;
    cin
>> x >> y;

    memset(a,
0 , sizeof  a);
    memset(b,
0 , sizeof  b);

    
for  ( int  i = 0 ;x > 0 ;i ++ )
    {
        a[i] 
=  x;
        x 
>>=   1 ;
    }
    
for  ( int  i = 0 ;y > 0 ;i ++ )
    {
        b[i] 
=  y;
        y 
>>=   1 ;
    }
    
for  ( int  i = 0 ;;i ++ )
    {
        
if  (ishave(a[i]))
        {
            cout
<< a[i] << endl;
            
break ;
        }
    }

    
return   0 ;
}

// POJ Grids 2756 Recursive Solution
#include  < iostream >
using   namespace  std;

int  common( int  x, int  y)
{
    
if  (x == y)
        
return  x;
    
if  (x > y)
        
return  common(x / 2 ,y);
    
else
        
return  common(x,y / 2 );
}

int  main()
{
    
int  x,y;
    cin
>> x >> y;
    cout
<< common(x,y) << endl;

    
return   0 ;
}

 

总结:在数据规模明显不会产生栈溢出时,应该考虑递归,毕竟代码短小美观的多.

 

 

 

                                                       By   Ns517

                                                      Time 09.02.05

转载于:https://www.cnblogs.com/ns517/archive/2009/02/05/1384553.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值