2017年下半年软件设计师下午试题

news2024/11/24 12:51:54

试题四

阅读下列说明和C代码,回答问题1至问题 2,将解答写在答题纸的对应栏内。
【说明】
一个无向连通图G点上的哈密尔顿(Hamiltion)回路是指从图G上的某个顶点出发,经过图上所有其他顶点一次且仅一次,最后回到该顶点的路径。一种求解无向图上哈密尔顿回路算法的基础私下如下:
假设图G存在一个从顶点V0出发的哈密尔顿回路V1——V2——V3——…——Vn-1——V0。算法从顶点V0出发,访问该顶点的一个未被访问的邻接顶点V1,接着从顶点V1出发,访问V1一个未被访问的邻接顶点V2,…。;对顶点Vi,重复进行以下操作:访问Vi的一个未被访问的邻接接点Vi+1;若Vi的所有邻接顶点均已被访问,则返回到顶点Vi-1,考虑Vi-1的下一个未被访问的邻接顶点,仍记为Vi;知道找到一条哈密尔顿回路或者找不到哈密尔顿回路,算法结束。
【C代码】
下面是算法的C语言实现。
(1)常量和变量说明

#include <stdlib.h>
#include <stdio.h> 
#define MAX 100

/*
n :图G中的顶点数
c[][]:图G的邻接矩阵
K:统计变量,当期已经访问的顶点数为k+1
x[k]:第k个访问的顶点编号,从0开始
visited[x[k]]:第k个顶点的访问标志,0表示未访问,1表示已访问
*/ 


void Hamilton(int n, int x, MAX, int c[MAX][MAX]){
	int i;
	int visited[MAX];
	int k;
	//初始化x数组和 visited数组
	for(i=0;i<n;i++){
		x[i]=0;
		visited[i]=0;
	} 
	
	//访问起始顶点
	k=0;	
	visited[0]=1;//填空1
	x[0]=0;
	k=k+1;
	
	// 访问其他顶点
	while(k>=0){
		x[k]=x[k]+1;
		while(x[k]<n){
			//邻接顶点x[k]未被访问过 
			if(  visited[x[k]]==0&& c[x-(k-1)][x[k]]==1)//填空2 
				break;
			else
				x[k]=x[k]+1;
		}
	}
	
	// 找到一条哈密尔顿回路 
	if(x[k]<n-1 && visited[x[k]]==1){//填空3
		for(k=0;k<n;k++){
			printf("%d--",x[k]);//输出 哈密尔顿回路 
		}
		printf("%d--",x[0]);
		return;	
	} 
	else if(x[k]<n&&k<n-1){//设置当前顶点的访问标志,继续下一个顶点 
		visited[x[k]]=1;//填空4
		k=k+1;
	}else{//没有未被访问过的邻接顶点,回退到上一个顶点 
		x[k]=0;
		visited x[k]=0;
		k=k-1;//填空5
	}		
}


【问题1】(10分)
根据题干说明。填充C代码中的空(1)~(5).

【问题2】(5分)
根据题干说明和C代码,算法采用的设计策略为(6),该方法在遍历图的顶点时,采用的是(7)方法(深度优先或广度优先)。 

试题六

阅读下列说明和Java代码,将应填入一且上一处的字句写在答题纸的对应栏内。
【说明】
某图像预览程序要求能够查看BMP 、JPEG和GIF三种格式的文件,且能够在Windows和Linux两种操作系统上运行。程序需具有较好的扩展性以支持新的文件格式和操作系统。为满足上述需求并减少所需生成的子类数目,现采用桥接模式进行设计,得到如图6-1所示的类图。

 【JAVA代码】

package test_2017_2;

class Matrix{   //各种格式的文件最终都被转化为像素矩阵
    //此处代码省略
}

abstract class Implementor{
    abstract void doPaint(Matrix m);     //填空1
        //显示像素矩阵m
}

class WinImp extends Implementor{
    @Override
    public void doPaint(Matrix m) {
        //调用Windows系统的绘制函数绘制像素矩阵
    }
}

class LinuxImp extends Implementor{
    @Override
    public void doPaint(Matrix m) {
        //调用Linux系统的绘制函数绘制像素矩阵
    }
}

abstract class Image{
    protected Implementor imp;
    public void setImp(Implementor imp){
        this.imp=imp;
    }
    public abstract void parseFile(String fileName);
}

class BMPImage extends Image{
    @Override
    public void setImp(Implementor imp) {
        super.setImp(imp);
    }

    @Override
    public void parseFile(String fileName) {
        //此处代码省略
    }
}

class GiFImage extends Image{
    @Override
    public void parseFile(String fileName) {
        //此处解析BMP文件并获得一个像素矩阵对象m
//        imp.doPaint(m);      //填空2
    }
}

public class ImageTest {
    public static void main(String[] args) {
        //在Linux操作系统上查看demo.gif图像文件
        Image image = new GiFImage();     //填空3
        Implementor imageImp = new LinuxImp();     //填空4
        image.setImp(imageImp);     //填空5
        image.parseFile("demo.gif");
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/499755.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HNU-操作系统OS-实验Lab4

OS_Lab4_Experimental report 湖南大学信息科学与工程学院 计科 210X wolf &#xff08;学号 202108010XXX&#xff09; 实验目的 了解内核线程创建/执行的管理过程了解内核线程的切换和基本调度过程 实验内容 lab2/3完成了物理和虚拟内存管理&#xff0c;这给创建内核线程…

C++之初识STL—vector

文章目录 STL基本概念使用STL的好处容器vector1.vector容器简介2.vector对象的默认构造函数3.vector对象的带参构造函数4.vector的赋值5.vector的大小6.vector容器的访问方式7.vector的插入 STL基本概念 STL(Standard Template Library,标准模板库)STL 从广义上分为: 容器(con…

springboot+vue音乐翻唱与分享平台(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的音乐网站与分享平台。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;…

基于 FineReport 快速设计联动报表

一、基于 FineReport 快速设计联动报表 FineReport 一款用于报表制作&#xff0c;分析和展示的工具&#xff0c;可以轻松的构建出灵活的数据分析和报表系统。 下面基于 FineReport 自带的数据表 销量 表快速设计一页可视化联动报表&#xff0c;数据格式如下&#xff1a; 报表…

最新最全花1W买的Python+Selenium全栈Web自动化测试

前言&#xff1a;看这篇帖子&#xff0c;最好要在知道定位八大元素的基础之上才能够比较熟练的看完这篇帖子自动化测试是软件开发中非常重要的一环&#xff0c;它可以帮助开发人员提高代码质量、减少错误和缺陷&#xff0c;并节省测试时间。其中&#xff0c;Selenium是一个广泛…

01- 目标检测 (综述)

要点&#xff1a; 区分One-stage detector 和 Two-stage detector 参考链接&#xff1a;深度学习目标检测最全综述 - 爱码网 详细模型解读参考&#xff1a;目标检测简介 - 知乎 一 目标检测分类 1.1 发展历程 检测网络发布历程&#xff1a; 1.2 检测模型分类 2014年后目标…

7---整数反转

给你一个 32 位的有符号整数 x x x &#xff0c;返回将 x x x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [ − 2 31 , 2 31 − 1 ] [−2^{31}, 2^{31} − 1] [−231,231−1]&#xff0c;就返回 0。 假设环境不允许存储 64 位整数&#xff08…

2017年上半年软件设计师下午试题

试题四 阅读下列说明和 C 代码&#xff0c;回答问题 1 至问题 3&#xff0c;将解答写在答题纸的对应栏内。 【说明】 假币问题&#xff1a;有 n 枚硬币&#xff0c;其中有一枚是假币&#xff0c;己知假币的重量较轻。现只有一个天平&#xff0c;要求用尽量少的比较次数找出这枚…

【编程福音,25款必备AI编码工具推荐,让你事半功倍】

&#x1f680; AI破局先行者 &#x1f680; &#x1f332; AI工具、AI绘图、AI专栏 &#x1f340; &#x1f332; 如果你想学到最前沿、最火爆的技术&#xff0c;赶快加入吧✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;CSDN-Java领域优质创作者&#x1f3c6;&am…

代码随想录算法训练营第三十四天 | 加油站题、左右贪心

1005. K次取反后最大化的数组和 文档讲解&#xff1a;代码随想录 (programmercarl.com) 视频讲解&#xff1a;贪心算法&#xff0c;这不就是常识&#xff1f;还能叫贪心&#xff1f;LeetCode&#xff1a;1005.K次取反后最大化的数组和_哔哩哔哩_bilibili 状态&#xff1a;能做出…

Hadoop的安装与配置

Hadoop的安装与配置 推荐按照我的博客下载hadoop&#xff0c;spark&#xff0c;pyspark以及scala这样版本搭配更好。 如果觉得自己不会版本搭配可私聊博主。 scala的安装和配置&#xff1a;https://blog.csdn.net/weixin_41957626/article/details/130548174 spark的安装和配置…

宇树Unitree机器狗连接外网的一种方法

宇树官方提供的方式&#xff1a; ​​​​​​​ 宇树机器狗连接网络的相关说明 (yuque.com) 我这里提供一种我采用的方式&#xff0c;仅供参考&#xff1a; 需要一根手机数据线&#xff0c;能联网的手机 我这里使用的是小米手机&#xff0c;其余手机大概也能行。 如下&…

ElasticSearch学习随笔之高级检索

ElasticSearch 1、ElasticSearch学习随笔之基础介绍 2、ElasticSearch学习随笔之简单操作 3、ElasticSearch学习随笔之java api 操作 4、ElasticSearch学习随笔之SpringBoot Starter 操作 5、ElasticSearch学习随笔之嵌套操作 6、ElasticSearch学习随笔之分词算法 7、ElasticS…

强化学习_06_pytorch-TD3实践(BipedalWalkerHardcore-v3)

基于策略的离线算法TD3 1.1 简介 reference: openai-TD3 DDPG的critic会高估, 从而导致actor策略失败。TD3是增加了三个关键技巧优化DDPG。经过优化后的TD3(Twin Dalayed DDPG 双延迟深度确定性策略梯度算法)适合于具有高维连续动作空间的任务。 Tricks: Clipped Double Q-l…

github学习笔记

目录 github简介 唯一版本库是什么意思 hub的含义什么&#xff1f; github功能介绍 登录、注册 GitHub 术语解释 Git 初体验及其常用命令介绍 git中的两个分支是否有冲突是什么意思&#xff0c;这是因为什么导致的 利用 SSH 完成 Git 与 GitHub 的绑定 通过 Git 将代…

[ Azure 云计算从业者 | AZ-900 ] Chapter 06 | 认识与了解 Azure 中相关的计算服务

本章节主要内容进行讲解&#xff1a;计算服务中的虚拟机 VM、虚拟机规模集 VMSS、Azure 容器&#xff08;ACI&#xff09;、Azure Kubernetes Service (AKS) 与Azure Functions 本系列已经更新文章列表&#xff08;已更新&#xff09;&#xff1a; [ Azure 云计算从业者 | AZ…

Java 基础进阶篇(十一)—— 泛型与可变参数

文章目录 一、泛型概述二、泛型的定义2.1 泛型类2.2 泛型方法2.3 泛型接口 三、泛型深入3.1 泛型通配符3.2 泛型上下限3.3 案例&#xff1a;定义一个 “所有车量进行比赛” 的方法 四、可变参数 一、泛型概述 泛型是 JDK5 中引入的特性&#xff0c;可以在编译阶段约束操作的数…

从源码全面解析Java 线程池的来龙去脉

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱敲代码的小黄&#xff0c;独角兽企业的Java开发工程师&#xff0c;CSDN博客专家&#xff0c;阿里云专家博主&#x1f4d5;系列专栏&#xff1a;Java设计模式、Spring源码系列、Netty源码系列、Kafka源码系列、JUC源码…

二叉树专题

⭐️前言⭐️ 本文主要总结一些常见的二叉树题目&#xff0c;希望读者能够通过这篇文章&#xff0c;来对二叉树有一个更深一步的了解。 &#x1f349;欢迎点赞 &#x1f44d; 收藏 ⭐留言评论 &#x1f4dd;私信必回哟&#x1f601; &#x1f349;博主将持续更新学习记录收获&…

【移动端网页布局】flex 弹性布局 ⑥ ( 设置侧轴多行子元素排列方式 | align-content 样式说明 | 代码示例 )

文章目录 一、设置侧轴多行子元素排列方式 : align-content 样式说明1、align-content 样式引入2、align-content 样式属性值 二、代码示例1、代码示例 - 侧轴多行元素从上到下排列2、代码示例 - 侧轴多行元素垂直居中3、代码示例 - 侧轴多行元素平分剩余空间4、代码示例 - 侧轴…