当前位置: 首页 > news >正文

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

试题四(共 15 分)

阅读下列说明和 C 代码,回答问题 1 至 3,将解答写在答题纸的对应栏内

【说明】

n 皇后问题描述为:在一个 n*n 的棋盘上摆放 n 个皇后,要求任意两个皇后不能冲突, 即任意两个皇后不在同一行、同一列或者同一斜线上。

算法的基本思想如下:

将第 i 个皇后摆放在第 i 行,i 从 1 开始,每个皇后都从第 1 列开始尝试。尝试时判断 在该列摆放皇后是否与前面的皇后有冲突,如果没有冲突,则在该列摆放皇后,并考虑摆 放下一个皇后;如果有冲突,则考虑下一列。如果该行没有合适的位置,回溯到上一个皇后考虑在原来位置的下一个位置上继续尝试摆放皇后,……,直到找到所有合理摆放方案。

【C 代码】

下面是算法的 C 语言实现。

(1)常量和变量说明

n:皇后数,棋盘规模为n*n

queen[]:皇后摆放位置数组,queen[i]表示第i个皇后的位置,1<=queen[i]<=n

(2)C程序
 

#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#define n 4/*
变量说明 
n:皇后数,棋盘规模n*n
queen[]:皇后的摆放位置数组,queen[i]表示第i个皇后的位置,1<=queen[i]<=n 
*/int queen[n+1];void Show(){     /* 输出所有皇后摆放方案 */int i;printf("(");for(i=1;i<=n;i++){printf(" %d",queen[i]);}printf(")\n");
}int Place(int j){       /*  检查当前列能否放置皇后,不能放返回0,能放返回1 */int i;for(i=1;i<j;i++){    /*  检查与已摆放的皇后是否在同一列或者同一斜线上  */if((queen[i]==queen[j])  || abs(queen[i]-queen[j]) == (j-i))  {//填空1return 0;}}return 1;//填空2
}void Nqueen(int j){int i;for(i=1;i<=n;i++){queen[j] = i;if(Place(j)&&j<=n){//填空3if(j == n) {      /* 如果所有皇后都摆放好,则输出当前摆放方案 */Show();} else {          /* 否则继续摆放下一个皇后 */Nqueen(j+1);//填空4}}}
}int main(){Nqueen(1);return 0;
}

【问题 1】(8 分)

根据题干说明,填充 C 代码中的空(1)-(4)。

【问题 2】(3 分)

根据题干说明和 C 代码,算法采用的设计策略为 (5)

【问题3】(4分)

当n=4时,有 (6) 种摆放方式,分别为 (7) 。

 

试题五(JAVA)

阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

某软件公司欲开发一款汽车竞速类游戏,需要模拟长轮胎和短轮胎急刹车时在路面上留下的不同痕迹,并考虑后续能模拟更多种轮胎急刹车时的痕迹。现采用策略(Strategy)设计模式来实现该需求,所设计的类图如图5-1所示。
 

【Java 代码】 

package test_2019_1;
import java.util.*;interface BrakeBehavior  {public void stop();  //填空1//其余代码省略
}class LongWheelBrake implements BrakeBehavior {public void stop() {System.out.println("模拟长轮胎刹车痕迹! ");}//其余代码省略
}class ShortWheelBrake implements BrakeBehavior {public void stop() {System.out.println("模拟短轮胎刹车痕迹!  ");}//其余代码省略
}abstract class Car {protected BrakeBehavior wheel; //填空2public void brake(){wheel.stop();//填空3}//其余代码省略
}class ShortWheelCar extends Car {public ShortWheelCar(BrakeBehavior behavior) {behavior.stop(); //填空4}//其余代码省略
}public class STrategyTest {public static void main(String[] args) {BrakeBehavior brake = new ShortWheelBrake();ShortWheelCar car1 = new ShortWheelCar(brake);car1.brake(); //填空5}
}
//模拟短轮胎刹车痕迹!  

 

http://www.lryc.cn/news/66796.html

相关文章:

  • IS200TPROH1BCB用于工业应用和电力分配等。高压型隔离开关用于变电站
  • 【MySql】数据库 select 进阶
  • CVPR 2023 | VoxelNeXt实现全稀疏3D检测跟踪,还能结合Seg Anything
  • 本地使用3台centos7虚拟机搭建K8S集群教程
  • NVIDIA CUDA驱动安装
  • python 从excel中获取需要执行的用例
  • Web3中文|乱花渐欲meme人眼,BRC-20总市值逼近10亿美元
  • 盖雅案例入选「首届人力资源服务国际贸易交流合作大会20项创新经验」
  • [论文笔记]SimMIM:a Simple Framework for Masked Image Modeling
  • mysql从零开始(4)----索引/视图/范式
  • Flutter框架:从入门到实战,构建跨平台移动应用的全流程解析
  • Spring AOP+注解方式实现系统日志记录
  • OpenGL 4.0的Tessellation Shader(细分曲面着色器)
  • 项目经理如何及时掌控项目进度?
  • HTML <applet> 标签
  • 加密与解密
  • 京东金融Android瘦身探索与实践
  • open3d-ml 读取SemanticKITTI Dataset
  • 6.其他函数
  • 2023年宜昌市中等职业学校技能大赛 “网络搭建与应用”竞赛题-1
  • Linux权限划分的原则
  • PhotoScan拼接无人机航拍RGB照片
  • 【设计模式】责任链模式的介绍及其应用
  • 一些思考关于行业,关于方向,关于人生路线
  • fbx sdk的使用介绍
  • mvvm模式
  • Spring/SpringBoot常用注解总结
  • 2023 年第八届数维杯大学生数学建模挑战赛 B 题 节能列车运行控制优化策略
  • 【Swift】 NSButton的用法和示例
  • 2023什么蓝牙耳机好?经销商盘点新手必入蓝牙耳机品牌