【Java】2021 RoboCom 机器人开发者大赛-高职组(复赛)题解

7-8 人工智能打招呼

hello.JPG

号称具有人工智能的机器人,至少应该能分辨出新人和老朋友,所以打招呼的时候应该能有所区别。本题就请你为这个人工智能机器人实现这个功能:当它遇到陌生人的时候,会说:“Hello X, how are you?”其中 X 是这个人的称呼;而当它再次遇到这个人的时候,会说:“Hi X! Glad to see you again!”

输入格式:

输入首先在第一行中给出一个正整数 N(≤105),随后一行给出 N 个人的编号。即简单起见,我们把每个人的称呼 X 用一个 5 位整数来替代。

输出格式:

对于每个人的编号,按照题面要求在一行中输出人工智能机器人打招呼的内容。

输入样例:

7
00000 99999 00000 12345 00000 12345 00000

输出样例:

Hello 00000, how are you?
Hello 99999, how are you?
Hi 00000! Glad to see you again!
Hello 12345, how are you?
Hi 00000! Glad to see you again!
Hi 12345! Glad to see you again!
Hi 00000! Glad to see you again!

Solution:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws IOException {BufferedReader in = new BufferedReader(new InputStreamReader(System.in));int n = Integer.parseInt(in.readLine());String[] input = in.readLine().split(" ");int[] book = new int[1000000];StringBuilder sb = new StringBuilder();for (int i = 0; i < n; i++) {int x = Integer.parseInt(input[i]);if (book[x] != 1) {sb.append("Hello ").append(input[i]).append(", how are you?");book[x] = 1;} else {sb.append("Hi ").append(input[i]).append("! Glad to see you again!");}if (i < n - 1) sb.append("\n");}System.out.println(sb);}
}

7-9 人工智能数字翻译

oksapmin.jpg

千万不要以为地球上的人类都用十进制数字。事实上,地球上不同国家、不同民族在用的数字系统多达十几套。例如新几内亚的 Oksapmin 人用的是 27 进制的数字系统,如上图所示,他们用身体的 27 个部位表示 27 个数字。例如他们管 1 叫“提普纳”,即一只手的大拇指;管 6 叫“都怕”,是指手腕;管 12 叫“纳塔”,指耳朵,等等。于是他们那里的 10 是十进制系统里的 27,20 是十进制里的 54 …… 当两个不同数字系统的人类碰到一起谈价钱,大家就很头痛了,于是搞了一个人工智能数字翻译,可以把数字从一个系统翻译到另一个系统。本题就请你来实现这个人工智能数字翻译功能。

输入格式:

输入在第一行中给出两个非负整数:A(≤108 —— 这里 108 是十进制数)和 D,其中 A 是 10 或 27 进制数,DA 的进制,或者是 10,或者是 27。如果 A 是 27 进制数,我们用 0 - 9 表示前 10 个数,用 A - Q 表示后面 17 个数。

输出格式:

在一行中将输入的数字翻译成另一个进制系统的数字。

输入样例 1:

6397636 10

输出样例 1:

C10OD

输入样例 2:

8E0A 27

输出样例 2:

167680

Solution:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws IOException {BufferedReader in = new BufferedReader(new InputStreamReader(System.in));String[] input = in.readLine().split(" ");int D = Integer.parseInt(input[1]);if (D == 10) {System.out.println(Integer.toString(Integer.parseInt(input[0]), 27).toUpperCase());} else {System.out.println(Integer.parseInt(input[0], 27));}}
}

7-10 机器人拼图

pz.png

给定一块由 n×m 个格子组成的矩形拼图板,本题要求你根据给定的机械手移动指令集,将拼图中的碎片逐一放到指定位置。

机械手每次抓取一块碎片,都会在拼图板的左上角位置等待指令。一个指令集是由 0-4 这五个数字组成的字符串,每个数字代表的意义如下:

  • 1:向右移动一格;
  • 2:向下移动一格;
  • 3:向左移动一格;
  • 4:向上移动一格;
  • 0:将碎片放置在当前位置,并结束这次任务。

如果指令要求机械手移动到拼图板边界外,机械手会无视这个指令。如果接收到指令 0 时,当前位置上已经有一块碎片放好了,机械手会扔掉手里的碎片,结束这次任务。

输入格式:

输入第一行给出 2 个正整数 nm(1≤n,m≤100),随后一共有 n×m 行,第 i 行给出编号为 ii=1,⋯nm)的碎片对应的指令集,每条指令集一定以唯一的 0 结尾。

输出格式:

输出 n 行,每行 m 个整数,为放置在对应位置上的碎片编号。如果该位置上没有碎片,则输出 0。一行中的数字间以 1 个空格分隔,行首位不得有多余空格。

输入样例:

2 3
1120
21140
34120
0
110
21111340

输出样例:

4 6 2
0 3 1

Solution:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws IOException {BufferedReader in = new BufferedReader(new InputStreamReader(System.in));String[] input = in.readLine().split(" ");int n = Integer.parseInt(input[0]);int m = Integer.parseInt(input[1]);int row = n * m;int[][] map = new int[n + 1][m + 1];for (int i = 1; i <= row; i++) {char[] c = in.readLine().toCharArray();int x = 1, y = 1;for (int j = 0; j < c.length; j++) {int op = c[j] - '0';if (op == 1 && y != m) {y++;} else if (op == 2 && x != n) {x++;} else if (op == 3 && y != 1) {y--;} else if (op == 4 && x != 1) {x--;}}if (map[x][y] == 0) {map[x][y] = i;}}StringBuilder sb = new StringBuilder();for (int i = 1; i < n + 1; i++) {for (int j = 1; j < m + 1; j++) {sb.append(map[i][j]);if (j < m) sb.append(" ");}if (i < n) sb.append("\n");}System.out.println(sb);}
}

7-11 PAT 基础级排名

PAT 的段位分为 9 个级别,其中基础级考试分为青铜、白银、黄金、白金、钻石这 5 个段位,满分分别为 30、50、60、80、100。

基础级考试由报考单位订制需要的最高级别,设为级别 L,根据考生获得的分数所在的分数段决定该生获得的证书级别和证书内容,规则为:

  • 若考生的分数超过段位 L1 的满分,且不高于段位 L2 的满分,并且 L1 和 L2 为相邻段位,则该生获得 L2 段位的证书;
  • 证书上包含两个成绩:S/FR/T,其中 S 是本人得分;F 是该段位满分;R 是本人在该段位证书获得者中的排名;T 是位于该段位及以下段位考生总人数。

给定一组考生的成绩,请你编写程序生成他们的证书。

输入格式:

输入首先在第一行给出 2 个正整数:一个是不超过 1000 的正整数 N,为考生总人数;另一个是单位订制的最高段位级别 L,在 [1, 5] 区间内,依次对应青铜、白银、黄金、白金、钻石这 5 个段位。

随后 N 行,每行给出一位考生的准考证号和成绩,其间以空格分隔。准考证号为长度不超过 10 的、由数字和英文字母组成的字符串;成绩为不超过段位 L 的满分的非负整数。

输出格式:

按照成绩从高到低的顺序输出每位考生的证书信息,格式为:

准考证号 段位 S/F R/T

成绩并列的考生拥有并列的排名,其后的考生名次按实际位次计算。例如有 5 位考生得到满分 100 时,他们都是第 1 名,而考 99 的考生就是第 6 名。成绩并列的考生按准考证号的字典序递增输出。题目保证准考证号没有重复。

注意:零分没有证书。对于零分的考生,只按字典序递增输出其准考证号。

输入样例:

10 4
CN001 58
CN012 49
CN233 0
CN003 0
CN025 31
CN999 80
CN666 80
CN777 60
CN007 79
CN250 15

输出样例:

CN666 4 80/80 1/10
CN999 4 80/80 1/10
CN007 4 79/80 3/10
CN777 3 60/60 1/7
CN001 3 58/60 2/7
CN012 2 49/50 1/5
CN025 2 31/50 2/5
CN250 1 15/30 1/3
CN003
CN233

Solution:

::: danger
测试点 1、4 答案错误
:::

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;public class Main {public static void main(String[] args) throws IOException {BufferedReader in = new BufferedReader(new InputStreamReader(System.in));String[] input = in.readLine().split(" ");int n = Integer.parseInt(input[0]);int l = Integer.parseInt(input[1]);List<Rank> list = new ArrayList<>();for (int i = 0; i < n; i++) {input = in.readLine().split(" ");int score = Integer.parseInt(input[1]);int L = 0;if (score <= 30) list.add(new Rank(input[0], 1, score, 30));else if (score <= 50) list.add(new Rank(input[0], 2, score, 50));else if (score <= 60) list.add(new Rank(input[0], 3, score, 60));else if (score <= 80) list.add(new Rank(input[0], 4, score, 80));else if (score <= 100) list.add(new Rank(input[0], 5, score, 100));}list.sort(null);int index = 1, cnt = 0, t = 0;Rank temp = list.get(0);StringBuilder sb = new StringBuilder();int size = list.size();for (int i = 0; i < size; i++) {Rank rank = list.get(i);if (rank.score == 0) {sb.append(rank.num);} else {sb.append(rank.num).append(" ").append(rank.L).append(" ").append(rank.score).append("/").append(rank.fullScore).append(" ");if (temp.score == rank.score && temp.L == rank.L) {sb.append(index).append("/").append(n);t++;} else if (temp.score != rank.score && temp.L == rank.L) {index = t + 1;sb.append(index).append("/").append(n);t++;} else {temp = list.get(i);index = 1;n -= t;sb.append(index).append("/").append(n);t = 1;}}cnt++;if (i < size - 1) sb.append("\n");}System.out.println(sb);}
}class Rank implements Comparable<Rank> {String num;int L;int score;int fullScore;public Rank(String num, int l, int score, int fullScore) {this.num = num;L = l;this.score = score;this.fullScore = fullScore;}@Overridepublic int compareTo(Rank o) {int r = o.score - this.score;if (r == 0) r = this.num.compareTo(o.num);return r;}
}

7-12 人工智能刑警

ai.png

人工智能技术在刑侦领域已经有了长足的发展,可以在拥挤的人群中识别出每个人的面部特征,与数据库中所有罪犯的面部特征进行匹配,自动识别出其中的罪犯。

本题就请你实现一个简单的自动识别程序,根据系统抽取出的若干面部特征判断其是否罪犯。

输入格式:

输入第一行给出两个正整数 N(≤2×104)和 M(≤10),分别为数据库中罪犯的数量和每个人脸提取的不同特征的数量。随后 N 行,每行给出 M 个整数,以空格分隔。第 i 行给出的是第 i 号罪犯的面部特征(1≤iN),格式为:

特征1 特征2 …… 特征M ID

其中每个特征是一个 [1,109] 区间内的整数;ID 是罪犯的编号,为不超过 20 位的正整数。注意不同位置的特征对应不同种类,例如特征1对应眼距、特征2对应唇宽等等。题目保证不存在任何两个罪犯具有完全相同的面部特征,所有 ID 也都是不同的。

再下面给出一系列捕捉到的人脸的面部特征。当特征10 时标志输入结束,这一行输入不要处理。此外,为了帮助你区分罪犯和普通人的数据,这两部分数据之间有一个空行。(因为是简单题,所以查询数据量比较小,不超过 2000。当然你可以考虑一下,如果查询数量巨大应该怎么处理……)

输出格式:

对每个捕捉到的人脸,如果与某个罪犯完全匹配,则在一行中输出罪犯编号(注意:如果有前导零也必须原样输出);如果没有匹配任何罪犯,则输出 Pass

输入样例:

9 4
15 23 23 7 0001
12 32 15 5 2001
10 15 23 3 3725
12 17 15 6 0238
15 10 23 11 99674
29 32 33 4 00253
9 31 987 13 1004
29 32 15 12 8791
15 23 25 7 772015 23 23 7
12 17 15 6
10 15 15 3
29 32 33 4
15 32 12 29
9 31 987 13
5 10 23 1
0 0 0 0

输出样例:

0001
0238
Pass
00253
Pass
1004
Pass

Solution:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;public class Main {public static void main(String[] args) throws IOException {BufferedReader in = new BufferedReader(new InputStreamReader(System.in));String[] input = in.readLine().split(" ");int n = Integer.parseInt(input[0]);int m = Integer.parseInt(input[1]);Map<String, String> map = new HashMap<>();for (int i = 0; i < n; i++) {input = in.readLine().split(" ");StringBuilder sb = new StringBuilder();for (int j = 0; j < m; j++) {sb.append(input[j]);if (j < m - 1) sb.append(" ");}map.put(sb.toString(), input[m]);}in.readLine();input = in.readLine().split(" ");while (!input[0].equals("0")) {StringBuilder sb = new StringBuilder();for (int j = 0; j < m; j++) {sb.append(input[j]);if (j < m - 1) sb.append(" ");}System.out.println(map.getOrDefault(sb.toString(), "Pass"));input = in.readLine().split(" ");}}
}

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

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

相关文章

chatglm2-6b模型在9n-triton中部署并集成至langchain实践 | 京东云技术团队

一.前言 近期&#xff0c; ChatGLM-6B 的第二代版本ChatGLM2-6B已经正式发布&#xff0c;引入了如下新特性&#xff1a; ①. 基座模型升级&#xff0c;性能更强大&#xff0c;在中文C-Eval榜单中&#xff0c;以51.7分位列第6&#xff1b; ②. 支持8K-32k的上下文&#xff1b…

【Linux】进程地址空间

目录 一、回顾我们以前学习的地址空间二、进程地址空间三、进程地址空间的作用四、解决一个地址出现两个值的问题 一、回顾我们以前学习的地址空间 这个内存布局真是的我们实实在在的内存嘛&#xff1f; 答案是不是的 下面我们来验证 1 #include<stdio.h>2 #include<a…

从三个主要需求市场分析,VR全景创业的潜力发展

VR全景&#xff0c;5G时代朝阳产业&#xff0c;其实拍摄制作很简单&#xff0c;就是利用一套专业的相机设备去给商家拍摄&#xff0c;结合后期专业的3DVR全景展示拍摄制作平台&#xff0c;打造3D立体环绕的效果&#xff0c;将线下商家真实环境1&#xff1a;1还原到线上&#xf…

使用docker快速搭建wordpress服务,并指定域名访问

文章目录 引入使用docker快速跑起服务创建数据库安装wordpress服务配置域名 引入 wordpress是一个基于PHP语言编写的开源的内容管理系统&#xff08;CMS&#xff09;&#xff0c;它有丰富的插件和主题&#xff0c;可以非常简单的创建各种类型的网站&#xff0c;包括企业网站、…

AI Chat 设计模式:15. 桥接模式

本文是该系列的第十五篇&#xff0c;采用问答式的方式展开&#xff0c;问题由我提出&#xff0c;答案由 Chat AI 作出&#xff0c;灰色背景的文字则主要是我的一些思考和补充。 问题列表 Q.1 如果你是第一次接触桥接模式&#xff0c;那么你会有哪些疑问呢&#xff1f;A.1Q.2 什…

内网隧道—HTTP\DNS\ICMP

本文仅限于安全研究和学习&#xff0c;用户承担因使用此工具而导致的所有法律和相关责任&#xff01; 作者不承担任何法律和相关责任&#xff01; HTTP隧道 Neo-reGeorg Neo-reGeorg 是一个旨在积极重构 reGeorg 的项目&#xff0c;目的是&#xff1a; 提高可用性&#xff0…

山西电力市场日前价格预测【2023-08-17】

日前价格预测 预测明日&#xff08;2023-08-17&#xff09;山西电力市场全天平均日前电价为376.70元/MWh。其中&#xff0c;最高日前电价为431.75元/MWh&#xff0c;预计出现在19: 45。最低日前电价为339.25元/MWh&#xff0c;预计出现在13: 15。 价差方向预测 1&#xff1a; 实…

【Unity造轮子】制作一个简单的2d抓勾效果(类似蜘蛛侠的技能)

文章目录 前言开始1. 实现简单的抓勾效果2. 高阶钩爪效果 源码参考完结 前言 欢迎阅读本文&#xff0c;本文将向您介绍如何使用Unity游戏引擎来实现一个简单而有趣的2D抓勾效果&#xff0c;类似于蜘蛛侠的独特能力。抓勾效果是许多动作游戏和平台游戏中的常见元素&#xff0c;…

【AI绘画】3分钟学会ikun幻术图

目录 前言一、效果展示二、准备工作三、操作步骤3.1平台创建实例3.2 启动SD 四、安装QR Code Monster 模型五、成图 前言 大家热爱的ikun幻术在今天的分享中将呈现。在本文中&#xff0c;我们将揭示一个备受欢迎的图像幻术技术&#xff0c;让您感受到令人惊叹的视觉创造力。 …

springboot+vue游戏攻略推荐网站的设计与开发_s5832

热门网游推荐网站是一个利用JAVA技术建设的网上管理系统&#xff0c;在热门网游推荐管理中实现信息化。系统的设计就是为了迎合广大用户需求而创建的一个界面简洁、有定向内容、业务逻辑简单易操作的热门网游推荐网站。本文以热门网游推荐为例&#xff0c;提出了利用JAVA技术设…

Linux下grep通配容易混淆的地方

先上一张图: 我希望找到某个版本为8的一个libXXX.8XXX.so ,那么应该怎么写呢? 先看这种写法对不对: 是不是结果出乎你的意料之外? 那么我们来看一下规则: 这里的 "*" 表示匹配前一个字符的零个或多个 于是我们就不难理解了: lib*8*.so 表示 包…

医疗PACS源码,支持三维多平面重建、三维容积重建、三维表面重建、三维虚拟内窥镜

C/S架构的PACS系统源码&#xff0c;PACS主要进行病人信息和影像的获取、处理、存储、调阅、检索、管理&#xff0c;并通过网络向全院提供病人检查影像及诊断报告&#xff1b;各影像科室之间共享不同设备的病人检查影像及诊断报告;在诊断工作站上&#xff0c;调阅HIS中病人的其它…

拒绝摆烂!C语言练习打卡第二天

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;每日一练 &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、选择题 &#x1f4dd;1.第一题 &#x1f4dd;2.第二题 &#x1f4dd;…

Springboot写单元测试

导入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintag…

【Unity每日一记】方位辨别—向量的叉乘点乘结合

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

grafana 的 ws websocket 连接不上的解决方式

使用了多层的代理方式&#xff0c;一层没有此问题 错误 WebSocket connection to ‘wss://ip地址/grafana01/api/live/ws’ failed: 日志报错 msg“Request Completed” methodGET path/api/live/ws status403 解决方式 # allowed_origins is a comma-separated list of o…

Flutter:简单搞一个内容高亮

内容高亮并不陌生&#xff0c;特别是在搜索内容页面&#xff0c;可以说四处可见&#xff0c;就拿掘金这个应用而言&#xff0c;针对某一个关键字&#xff0c;我们搜索之后&#xff0c;与关键字相同的内容&#xff0c;则会高亮展示&#xff0c;如下图所示&#xff1a; 如上的效果…

【Linux操作系统】举例解释Linux系统编程中文件io常用的函数

在Linux系统编程中&#xff0c;文件IO操作是非常常见和重要的操作之一。通过文件IO操作&#xff0c;我们可以打开、读取、写入和关闭文件&#xff0c;对文件进行定位、复制、删除和重命名等操作。本篇博客将介绍一些常用的文件IO操作函数。 文章目录 1. open()1.1 原型、参数及…

读书笔记 |【项目思维与管理】➾ 顺势而动

读书笔记 |【项目思维与管理】➾ 顺势而动 一、企业步入“终结者时代”二、过去成功的经验也许是最可怕的三、做好非重复性的事四、适应客户是出发点五、向知识型企业转变六、速度是决胜条件 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; …