/*初始化x数组贺visited数组*/ for (i=0:i x[i]=0; visited [i]=0; } /*访问起始顶点*/ k=0 ( ); x[0]=0 K=k+1 /*访问其他顶点*/ while(k>=0){ x[k]=x[k]+1; while(x[k]> if ( )&&c[x-[k-1]][x[k]=1){/*邻接顶点x[k]未被访问过*/ break; }else{ x[k] = x[k] +1 } } if(x[k] for (k=0;k prinf(〝%d--〝,x[k] ; /*输出哈密尔顿回路*/ } prinf(〝%d--〝,x[0] ; return; }else if x[k] ( ) k=k+1; }else{/*没有未被访问过的邻接顶点,回退到上一个顶点*/ x[k]=0; visited x[k]=0; ( ); } } } 【问题1】(10分) 根据题干说明。填充C代码中的空(1)~(5). 1、visited[0] = 1 2、visited[x[k]] == 0 3、c[x[0]][x[k]] 4、visited[x[k]] = 1 5、k = k - 1 【问题2】(5分) 根据题干说明和C代码,算法采用的设计策略为(6),该方法在遍历图的顶点时,采用的是(7)方法(深度优先或广度优先)。 6、回溯法 7、深度优先 试题五 阅读下列说明和 C++代码,将应填入( )处的字句写在答题纸的对应栏内。 【说明】 某图像预览程序要求能够查看BMP 、JPEG和GIF三种格式的文件,且能够Windows和Linux两种操作系统上运行程序需具有较好的扩展性以支持新的文件格式和操作系统。为满足上述需求并减少所需生成的子类数目,现采用桥接(Bridge)模式进行设计,得到如图5-1所示的类图。 【问题1】 【C++代码】 #include #include<:string> ; Using namespace std; class Matrix{//各种格式的文件最终都被转化为像素矩阵 //此处代码省略 }; class Implementor{ public: (1);显示像素矩阵 m }; class WinImp:public Implementor{ public: Viod doPaint(Matrix m){ /*调用Windows系统的绘制函数绘制像素矩阵*/ }; class LinuxImp:public Implementor{/*调用Linux系统的绘制函数绘制像素矩阵*/} }; class Image{ public: viod setImp(Implement*imp)?{this->imp=imp;} Virtual viod parseFile(string fileName)=0 protected: Implementor*imp; }; class BMPImage:public Image{ //此处省略代码 }; class GIFImage:public Image{ Public: viod parseFile(string fileName) { //此处解析GIF文件并获得一个像素矩阵对象m (2);显示像素矩阵m } }; class JPEGImage:public Image{ //此处代码省略 }; int main(){ //在linux操作系统上查看demo.gif图像文件 Image*image=(3); Implementor*imageImp=(4); (5) Image->parseFile(〝demo.gif〝); return 0; } 1.virtual void doPaint(Matrix m) = 0 2. imp->doPaint(m) 3. new GIFImage() 4. new LinuxImp() 5. image->setImp(imageImp)
好文档 - 专业文书写作范文服务资料分享网站