首页 > 编程语言 >军事演习算法

军事演习算法

时间:2024-03-21 09:34:47浏览次数:179  
标签:战斗机 军事演习 地图 导弹 算法 指令 编号 基地

题目描述
军事演习中分为红蓝两方,我方为蓝方。
地图简化为 n 行 m 列的二维矩阵形式,红方基地在地图中使用 # 表示,蓝方基地在地图中使用 * 表示,中立区域使用 . 表示。
下图为地图示例:
.........###...............
........###..............
.........###....****.......
........#####.....
....
.........##............
...........................
.............
...........
......###....
...........
......##...................
......................
...
...##................
...
...........................
两方均只使用战斗机进行演练,各个基地停放若干架战斗机并存储若干战备(燃油、导弹)。
战斗机在地图中可向上、下、左、右四个方向进行移动,假定各战斗机在行驶途中有各自飞行高度而不会相撞。所有战斗机的速度均为 1 格 / 帧,
空中每经过一帧消耗一单位油量,攻击距离均为 1 格。各战斗机具有的属性为:
编号
油箱容量
最大载弹量
战斗机可以在起飞的基地进行加油和装弹,也可以在途经的己方基地加油和装弹,装填时间不计。
出于隐蔽考虑,战斗机不应经过未被摧毁的敌方基地,而每架战斗机都可以向其上下左右四个方向发射导弹,射程为 1 格。同时不能飞出地图边
界。战斗机中途可以在非敌方基地处降落(不发出移动指令则视为降落)。
基地中各个位置均具有其初始属性:
基地编号
战斗机数量及其属性
燃油储备量
导弹储备量
防御数值
军事价值
其中,防御数值指的是,彻底摧毁该基地所需要的导弹数(可以累加)。当彻底摧毁某个基地后,才可得到对应军事价值的分数。
这是一个简化的问题,所以你只需要考虑作为蓝方如何调度战斗机进攻红方基地,不需要考虑红方对此做出的反击或防御措施,目标为得分最大
化。
输入格式
第一行两个正整数 n, m(1 ≤ n, m ≤ 200) 说明地图表示为一个 n 行 m 列的矩阵。
接下来 n 行,每行 m 个字符,表示地图情况。
如:
9 6
......
..
..#......
.##......
.......
.
......***
...#.....
对于一个基地,先输入一行 表示接下来要描述位于第 行第 列的基地信息。
接下来一行 个整数分别表示该位置编号 、该位置的战斗机数量 、燃油储备量 、导弹储备量
、防御数值 、军事价值 。保证编号连续且从 开始。
接下来 行,一行三个整数,分别表示一架战斗机的编号、油箱容量、最大载弹量。
保证先输入蓝方基地信息,再输入红方基地信息。例如上图中有 个蓝方基地, 个红方基地。
输出格式
对于每一帧,输出若干行战斗机指令。
指令格式 作用
move 该指令表示战斗机的移动。第一个参数为移动的战斗机编号,第二个参数为移动方向的编号。 1 2 3 4 分别表示
“上、下、左、右”。若执行该指令后战斗机下一位置超出地图边界或进入未被摧毁的敌方基地,该指令将被忽略。
attack
该指令表示战斗机的进攻。第一个参数为进攻的战斗机编号,第二个参数为攻击方向的编号。 1 2 3 4 分别表示
“上、下、左、右”。无条件打击攻击位置,即使为己方基地。(己方基地也可能被摧毁)
若攻击位置超出地图边界,仍然消耗导弹,但没有实际作用。
fuel
该指令表示为战斗机添加燃油。第一个参数为添加燃油的战斗机编号,第二个参数为添加燃油的数量。
若执行该指令时战斗机不位于基地或添加燃油的数量不合法(超过基地剩余油量或添加后大于该战斗机油量),
该指令将被忽略。
missile
该指令表示为战斗机装填导弹。第一个参数为装填导弹的战斗机编号,第二个参数为装填导弹的数量。
若执行该指令时战斗机不位于基地或添加导弹的数量不合法
(超过基地剩余导弹量或添加后大于该战斗机载弹量),该指令将被忽略。
一帧输出结束后,输出一行 OK 并刷新输出。
例如:
C++ 可以使用 fflush(stdout) 或者 cout.flush() ;
Java 可以使用 System.out.flush() ;
Pascal 可以使用 flush(output) ;
Python 可以使用 stdout.flush() 。
每一帧输出 OK 后,判题器将会返回当前得分信息以及该帧的错误指令警告信息。
总共 帧,每一帧的处理时间不受限,但需要保证程序在 分钟内结束。

标签:战斗机,军事演习,地图,导弹,算法,指令,编号,基地
From: https://www.cnblogs.com/kantong/p/18086612

相关文章

  • 如何理解递归算法?
     首先说说递归思想,我认为可以从以下三点进行把握:将大问题分解为有限个子问题;每个子问题的求解方式相同;存在已知的最小子问题,作为“归”的条件。 一句话解释:递归思想是将大问题分解为数个求解方式相同的子问题,且该问题具有已知的最小子问题。 另外,递归是分为两个......
  • 【数据结构和算法初阶(C语言)】二叉树的顺序结构--堆的实现/堆排序/topk问题详解---二
     目录 ​编辑1.二叉树的顺序结构及实现1.1二叉树的顺序结构2堆的概念及结构3堆的实现3.1堆的代码定义3.2堆插入数据3.3打印堆数据3.4堆的数据的删除3.5获取根部数据3.6判断堆是否为空3.7堆的销毁 4.建堆以及堆排序 4.1堆排序---是一种选择排序4.2升......
  • 最短路径算法
    原文链接:https://blog.csdn.net/xiaoxi_hahaha/article/details/110257368已知起始结点,求最短路径的问题。适合使用Dijkstra算法。迪杰斯特拉算法是由荷兰计算机科学家在1956年发现的算法,此算法使用类似广度优先搜索的方法解决了带权图的单源最短路径问题。它是一个贪心算法。全......
  • 代码学习第24天----回溯算法
    随想录日记part24time:time:time:2024.03.10主......
  • 归并排序算法 java实现
    publicstaticvoidmain(String[]args){int[]arr={9,5,7,3,1,6,8,4,2};mergeSort(arr,0,arr.length-1);}/***归并排序*注意:归并的拆分数组和合并数组是从左到右依次进行的,网上很多文章都是错误的*并不是左右一起拆分,网上很多文章都是这样的......
  • 基于深度学习的人员指纹身份识别算法matlab仿真
    1.算法运行效果图预览  2.算法运行软件版本matlab2022a  3.算法理论概述      指纹识别技术是一种生物特征识别技术,它通过分析人类手指末端皮肤表面的纹路特征来进行身份认证。深度学习是机器学习的一个分支,特别适用于处理大规模高维数据,并在图像识别、语......
  • 算法-购物车问题
    算法-购物车问题问题描述终于发了年终奖准备去网上购物,如何能在有限的预算内,得到最大的收益呢。如果只到这里的话,其实就是一个背包问题,可以参考链接。然鹅还有其他条件:可以购买的物品分为两类:主物品可以单独购买,附件物品只能在已经购买了主物品的情况下购买。例如,要购买......
  • 贪心算法详解
    贪心1建立数学模型来描述问题2把求解的问题分成若干个子问题3对每一个子问题求解,得到子问题的局部最优解4把子问题的解局部最优解合成原来解问题的一个解总结:局部最优做到全局最优。例题实战1在很久以前,有n个部落居住在平原上,依次编号为1到n,第i个部落的人数为ti,......
  • 目标检测——YOLOX算法解读
    论文:YOLOX:ExceedingYOLOSeriesin2021(2021.7.18)作者:ZhengGe,SongtaoLiu,FengWang,ZemingLi,JianSun链接:https://arxiv.org/abs/2107.08430代码:https://github.com/Megvii-BaseDetection/YOLOXYOLO系列算法解读:YOLOv1通俗易懂版解读SSD算法解读YOLOv......
  • 使用verillog编写KMP字符串匹配算法
    设计思路如下:定义模块的输入输出信号:包括时钟信号clk、复位信号rst、模式串pattern、文本串text以及输出信号match。定义所需寄存器和变量:使用寄存器来存储状态机的状态以及其他控制变量,如模式串数组P、失配函数数组F、模式串位置p_index、文本串位置t_index等。在时钟......