2011年11月27日星期日

百练 2755 二叉树 递归水题


常规思路 = =
直接打表出来,两个for找到最先相同的值。。。


#include“cstdio”
int a[20],b[20];
int main()
{
int x,y;
scanf("%d%d",&x,&y);
for(int i = 0;x + y;i ++){
if(x){a[i] = x;x /= 2;}
if(y){b[i] = y;y /= 2;}
}
for(int i = 0;a[i];i ++)
for(int j = 0;b[j];j ++)
if(a[i] == b[j]){
printf("%d\n",a[i]);
return 0;
}
return 0;
}




递归思路:



#include“cstdio”
int common(int x,int y)
{
if(x == y)return x;
if(x > y)return common(x / 2,y);
return common(x,y / 2);
}
int main()
{
int a,b;
scanf("%d%d",&a,&b);
printf("%d\n",common(a,b));
return 0;
}




数据太弱的情况,时间上看不出什么分别,但貌似递归的思路是比较巧妙的。。。。

没有评论:

发表评论