POJ 2756 二叉树 解题报告
2009-02-05 14:07
417 查看
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
编号: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
相关文章推荐
- 百练-2756-二叉树-解题报告
- POJ 3150 / Uva 1386 Cellular Automaton 解题报告(循环矩阵)
- POJ 2742 统计字符数 解题报告
- Poj 1260 DP 解题报告
- POJ 2746 约瑟夫问题 解题报告
- POJ-2002 Squares 解题报告
- ACM POJ 2245Lotto解题报告
- POJ 1276 Cash Machine 解题报告
- POJ3322解题报告
- poj 1905Expanding Rods(二分法)(解题报告)
- POJ3009Curling 2.0解题报告
- POJ 2796 数字求和 解题报告
- poj解题报告——2388
- POJ1426 Find The Multiple 解题报告
- POJ 3280 解题报告
- POJ 1789 Truck History 解题报告
- poj解题报告——poj 3536 Beer Refrigerator
- POJ 2420 模拟退火 解题报告
- poj图论解题报告索引
- poj 1163 The Triangle之解题报告