目录
第一题-选择题1
答案:5
前面a,b创建两个对象,c中包含3个对象,所以构造三次,p是指针数组,存放两个地址,不会调用构造函数
第二题-选择题2
答案:0
ad是一个指针,指针只能指向PAT类型的三个连续的空间
第三题-最近公共祖先
思路:
两个数比较大小,如果两个数相等则找到共同父节点,如果两个数不相等,则赋值给较大的数他的父节点,然后两个数再比较.
class LCA {
public:
int getLCA(int a, int b) {
// write code here
while(a!=b)
{
if(a>b)
{
a = a/2;
}
else{
b = b/2;
}
}
return a;
}
};
第四题-求最大连续bit数
思路:
按照位数依次比较,次数存放到count中,当遇到不是0时,将count中的数与max_count比较,更新max_count
#include<iostream>
#include<vector>
using namespace std;
int main ()
{
int n;
int count;
int max_count = 0;
while(cin>>n)
{
for(int i = 0; i < 32; ++i)
{
if((n>>i)&1 == 1)
{
count++;
}
else
{
if(count > max_count)
{
max_count = count;
}
count = 0;
}
}
cout<<max_count<<endl;
}
return 0;
}