【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.rhkb.cn/news/89275.html

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

相关文章

Debian 12.1 正式发布

导读Debian 12.1 现已发布&#xff0c;这是对稳定发行版 Debian 12&#xff08;代号 Bookworm &#xff09;的首次更新。本次发布主要增加了安全问题的修正&#xff0c;并对严重问题进行了一些调整。 一些更新内容包括&#xff1a; 妥善处理系统用户的创建&#xff1b;修复 eq…

A Survey for In-context Learning

A Survey for In-context Learning 摘要&#xff1a; 随着大语言模型(LLMs)能力的增长&#xff0c;上下文学习(ICL)已经成为一个NLP新的范式&#xff0c;因为LLMs仅基于几个训练样本让内容本身增强。现在已经成为一个新的趋势去探索ICL来评价和extrapolate LLMs的能力。在这篇…

二次封装element-plus上传组件,提供校验、回显等功能

二次封装element-plus上传组件 0 相关介绍1 效果展示2 组件主体3 视频组件4 Demo 0 相关介绍 基于element-plus框架&#xff0c;视频播放器使用西瓜视频播放器组件 相关能力 提供图片、音频、视频的预览功能提供是否为空、文件类型、文件大小、文件数量、图片宽高校验提供图片…

【Linux】【驱动】驱动框架以及挂载驱动

【Linux】【驱动】驱动框架以及挂载驱动 绪论1.配置开发环境2. 编写驱动文件3. 编译Makefile文件4.编译5. 挂载驱动注意:有些开发板打开了或者禁止了printk信息&#xff0c;导致你看到的实验现象可能不一样&#xff0c;此时已经将文件移动到了开发板中&#xff0c;开发板查看文…

Mac 调试 ios safar

1. 打开Mac的 Safari 浏览器的“开发”菜单 运行 Safari 浏览器&#xff0c;然后依次选取“Safari 浏览器”>“偏好设置”&#xff0c;点按“高级”面板&#xff0c;然后勾选“在菜单栏中显示开发菜单”。 2. 开启IPhone的Safari调试模式 启用 Web 检查 功能&#xff0c;打…

手把手教你如何实现内网搭建电影网站并进行公网访问(保姆级教学)

手把手教你如何实现内网搭建电影网站并进行公网访问 文章目录 手把手教你如何实现内网搭建电影网站并进行公网访问前言1. 把软件分别安装到本地电脑上1.1 打开PHPStudy软件&#xff0c;安装一系列电影网站所需的支持软件1.2 设置MacCNS10的运行环境1.3 进入电影网页的安装程序1…

11款UML/SysML建模工具更新(2023.7)Papyrus、UModel……

DDD领域驱动设计批评文集 欢迎加入“软件方法建模师”群 《软件方法》各章合集 最近一段时间更新的工具有&#xff1a; 工具最新版本&#xff1a;drawio-desktop 21.6.5 更新时间&#xff1a;2023年7月22日 工具简介 开源绘图工具&#xff0c;用Electron编写&#xff0c;…

小程序发布注意事项

1、使用HBuildx的 发布 功能发布小程序&#xff0c;因为编译完的代码目录不是同一个 如果使用 运行 到小程序&#xff0c;最后发布的版本会显示”无法连接本地服务器“ 2、使用unicloud的云服务 uniCloud发行 | uni-app官网 阿里云的unicloud的话&#xff0c;使用request域名…

uniapp开发微信小程序底部地区选择弹框

个人项目地址&#xff1a; SubTopH前端开发个人站 &#xff08;自己开发的前端功能和UI组件&#xff0c;一些有趣的小功能&#xff0c;感兴趣的伙伴可以访问&#xff0c;欢迎提出更好的想法&#xff0c;私信沟通&#xff0c;网站属于静态页面&#xff09; SubTopH前端开发个人站…

在centos7下通过docker 安装onlyoffice

因为需要调试网盘&#xff0c;所以今天安装一下centos7的onlyoffice 官方介绍如下&#xff1a; 为了方便&#xff0c;还是通过docker方式来安装onlyoffice了&#xff0c;这里我们采用社区版本了。 1、下载docker安装包 如下&#xff1a; docker pull onlyoffice/documentserv…

如何实现浅拷贝和深拷贝

一、浅拷贝的实现方法 1.Object.assign方法 let obj1{name:"aaa",}let obj2{age:20}let obj3Object.assign(obj1,obj2)// obj3.age30console.log(obj1);console.log(obj3);console.log(obj1obj3);console.log(obj1obj3); 结果为&#xff1a; 2.直接赋值 let obj1{n…

Falco操作系统安全威胁监测利器

原理简介 Falco是一个开源的云原生安全工具&#xff0c;用于检测和防御容器和云原生环境中的安全威胁。它基于Linux内核的eBPF技术&#xff0c;通过监控系统调用和内核事件来实现安全检测和响应。 具体来说&#xff0c;Falco的实现原理如下&#xff1a; 1. 内核模块&#xf…

AI大模型自动生成PowerPoint(PPT)

1&#xff0c;使用现有开源大模型工具&#xff0c;生成markdown语言文件&#xff08;我这里使用chatGLM2-6B&#xff09; eg&#xff0c;请用Markdown语言生成一个大纲&#xff0c;主题是&#xff1a;给小白用户的第一课&#xff0c;如何快速的学好Python markdown语言文本如下…

LeetCode 33题:搜索旋转排序数组

目录 题目 思路 代码 暴力解法 分方向法 二分法 题目 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 …

字节原来这么容易进,是面试官放水,还是公司实在是太缺人?

本人211非科班&#xff0c;之前在字节和腾讯实习过&#xff0c;这次其实没抱着什么特别大的希望投递&#xff0c;没想到字节可以再给我一次机会&#xff0c;还是挺开心的。 本来以为有个机会就不错啦&#xff01;没想到能成功上岸&#xff0c;在这里要特别感谢帮我内推的同学&…

Spring security之JWT

JWT 这里写目录标题 JWT一级目录二级目录三级目录1.什么是JWT 2.JWT的组成部分3.编码/解码4.特点5. 为什么使用JWT5.1传统的验证方式 5.2基于JWT的验证方式6.JWT进行登录验证6.1依赖安装6.2编写UserDetailServiceImpl类6.3编写UserDetailsImpl类6.4 实现config.SecurityConfig类…

redis分布式集群-redis+keepalived+ haproxy

redis分布式集群架构&#xff08;RedisKeepalivedHaproxy&#xff09;至少需要3台服务器、6个节点&#xff0c;一台服务器2个节点。 redis分布式集群架构中的每台服务器都使用六个端口来实现多路复用&#xff0c;最终实现主从热备、负载均衡、秒级切换的目标。 redis分布式集…

服务器安装Tomcat

下载Tomcat 下载地址在这&#xff1a; Tomcat官网 下载完成以后把压缩包上传到服务器中&#xff08;我传到了www/java&#xff09;,进行解压(解压到)&#xff0c;如果没有进行指定解压到哪里&#xff0c;默认是到root文件夹中 tar -zxvf /www/java/apache-tomcat-9.0.103.tar.…

《格斗之王AI》使用指南

目录 一、说明 二、步骤 1. 下载 2.配置环境 3.替换 4.测试 5.训练 一、说明 该项目是 针对B站UP主 林亦LYi 的作品 格斗之王&#xff01;AI写出来的AI竟然这么强&#xff01;的使用指南&#xff0c;目的是在帮助更多小白轻松入门&#xff0c;一起感受AI的魅力。 林亦LYi…

如何定位线上CPU飙高的问题

1.问题情景 我们的接口卡死&#xff0c;CPU飙高到打不开的网页 2.问题定位 2.1 top指令 通过top命令找到CPU耗用最厉害的那个进程的PID 直接输入top Linux下的100%代表一个核心&#xff0c;如果是八核&#xff0c;最高可以到800%&#xff0c;这样才算满 然后通过PID找到CP…