試題四[題目略]
是個貪心的算法題..
(1) k=0
(2) j<=N
(3) k=k+1
(4) d[i] + 6
(5) O(N)




#include <iostream>
using namespace std;


void Fun(int *d,int N)
{
int i=1,j,k=0;
int *s=new int[N+1];
memset(s,0,sizeof(s));
while(i<=N)

{
j=i+1;
while(j<=N&&d[j]-d[i]<=12) //如果2個房子可以用一個基站覆蓋
j=j+1;
++k; //建一個基站
s[k]=d[i]+6; //s[k]為第k個基站到公路A端的距離
i=j; //繼續(xù)從沒有覆蓋的開始搜索.
}
cout<<k<<endl;
delete []s;
}


int main()
{
int N;
freopen("in.cpp","r",stdin);
//6 2 7 12 13 16 20
//5 8 15 22 29 36
while(cin>>N&&N)

{
int *d=new int[N+1];
for(int i=1;i<=N;++i)
scanf("%d",&d[i]);
d[0]=0;
Fun(d,N);
delete []d;
}
return 0;
}

試題五[題目略]
2叉樹的數(shù)據(jù)結(jié)構(gòu)考題

typedef struct TreeNode
{
int id; //當(dāng)前節(jié)點的識別號
int ChildNum; //當(dāng)前節(jié)點的子節(jié)點數(shù)目
int d; //父親點到當(dāng)前節(jié)點的信號衰減值
struct TreeNode **childptr; //向量,存放當(dāng)前節(jié)點到其所有子節(jié)點的指針
int M; //當(dāng)前節(jié)點到其所有子節(jié)點的信號衰減值中的最大值
bool boost; //是否在當(dāng)前節(jié)點放置信號放大器的標(biāo)志
}TreeNode;


void placeBoosters(TreeNode *root)
{
//計算root所指節(jié)點處的衰減量,如果衰減量超出了容忍值,則放置放大器
TreeNode *p;
int i,degradation;
if(root)

{
degradation=0;root->M=0;
i=0;
if(i>=root->ChildNum) //沒有孩子返回
return;
p=root->childptr[0];
for(;i<root->ChildNum&&p;i++,p=root->childptr[i])

{
p->M=0;
placeBoosters(p);
if(p->d+p->M>Tolerance)

{
p->boost=true;
p->M=0;
}
if(p->d+p->M>degradation)
degradation=p->d+p->M;
}
root->M=degradation;
}
}

試題六[題目略]
考的是抽象類,純虛函數(shù),繼承和派生的知識。
#include <iostream>
using namespace std;


class FlyBehavior
{
public:
virtual void fly()=0;
};


class QuackBehavior
{
public:
virtual void quack()=0;
};


class FlyWithWings:public FlyBehavior
{
public:

void fly()
{ cout<<"使用翅膀飛行!"<<endl;}
};


class FlyNoWay:public FlyBehavior
{
public:

void fly()
{ cout<<"不能飛行!"<<endl;}
};


class Quack:public QuackBehavior
{
public:

void quack()
{ cout<<"發(fā)出\'嘎嘎\'聲!"<<endl;}
};


class Squeak:public QuackBehavior
{
public:

void quack()
{ cout<<"發(fā)出空氣與橡皮摩擦聲!"<<endl;}
};


class QuackNoWay:public QuackBehavior
{
public:

void quack()
{ cout<<"不能發(fā)聲!"<<endl;}
};


class Duck
{
protected:
FlyBehavior *flyBehavior;
QuackBehavior *quackBehavior;
public:

void fly()
{ flyBehavior->fly();}

void quack()
{ quackBehavior->quack();}
virtual void display()=0;
};


class RubberDuck:public Duck
{
public:

RubberDuck()
{
flyBehavior=new FlyNoWay();
quackBehavior=new Squeak();
}

~RubberDuck()
{
if(!flyBehavior) delete flyBehavior;
if(!quackBehavior) delete quackBehavior;
}

void display()
{}
};

.....~ 如有錯誤,請指出