试题四[题目略]
是个贪心的算法题..
  (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;                        //继续从没有覆盖的开始搜索.
    }

    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叉树的数据结构考题
typedef struct TreeNode{
    
int id;               //当前节点的识别号
    int ChildNum;         //当前节点的子节点数目
    int d;                //父亲点到当前节点的信号衰减值
    struct TreeNode **childptr; //向量,存放当前节点到其所有子节点的指针
    int M;            //当前节点到其所有子节点的信号衰减值中的最大值
    bool boost;       //是否在当前节点放置信号放大器的标志
}
TreeNode;

void placeBoosters(TreeNode *root){
    
//计算root所指节点处的衰减量,如果衰减量超出了容忍值,则放置放大器
    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;
    }

}


试题六[题目略]
考的是抽象类,纯虚函数,继承和派生的知识。

#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<<"发出\'嘎嘎\'声!"<<endl;}
}
;

class Squeak:public QuackBehavior{
    
public:
        
void quack(){ cout<<"发出空气与橡皮摩擦声!"<<endl;}
}
;

class QuackNoWay:public QuackBehavior{
    
public:
        
void quack(){ cout<<"不能发声!"<<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(){}
}
;
.....~ 如有错误,请指出