【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.pswp.cn/news/39214.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/39214.shtml
英文地址,請注明出處:http://en.pswp.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…

三種目標檢測方法(基于傳統數字圖像處理的識別方法、基于傳統機器學習的識別方法和基于深度學習的識別方法)的區別

問題描述&#xff1a;圖像檢測分為了基于傳統數字圖像處理的識別方法、基于傳統機器學習的識別方法和基于深度學習的識別方法&#xff0c;但是有時迷惑三者的區別是什么呢&#xff1f; 問題解答&#xff1a; 第一&#xff0c;基于傳統數字圖像處理的識別方法和其他兩者的區分…

【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;包括企業網站、…

Java異步方法CompletableFuture類的使用

Java中常用的異步方法 1、使用線程&#xff1a;你可以創建一個新的線程來執行異步操作。這可以通過直接創建Thread對象并啟動它&#xff0c;或者使用線程池來管理線程的生命周期。 new Thread(() -> {// 異步操作代碼 }).start(); 2、使用線程池Executor框架&#xff1a;E…

Spring Boot 支持多種環境,包括開發環境、測試環境、預發布環境和生產環境。

Spring Boot 支持多種環境&#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; 實…

python實現抽獎小程序

使用Python的Tkinter庫來添加抽獎程序的界面操作。下面是一個示例代碼&#xff1a; import random import tkinter as tkdef lottery():prizes [一等獎, 二等獎, 三等獎, 謝謝參與]winner random.choice(prizes)result_label.config(text恭喜您獲得了{}&#xff01;.format(…

未出現過的最小正整數

給定一個長度為 n 的整數數組&#xff0c;請你找出未在數組中出現過的最小正整數。 樣例 輸入1&#xff1a;[-5, 3, 2, 3]輸出1&#xff1a;1輸入2&#xff1a;[1, 2, 3]輸出2&#xff1a;4數據范圍 1≤n≤105 , 數組中元素的取值范圍 [?109,109]。 代碼&#xff1a; c…

MySql主從復制1032錯誤(Slave_IO_Running: Yes Slave_SQL_Running: No)

MySql主從復制1032錯誤&#xff08;Slave_IO_Running: Yes Slave_SQL_Running: No&#xff09; Slave_IO_Running: Yes Slave_SQL_Running: No報錯&#xff1a; Last_SQL_Error: Could not execute Delete_rows event on table hr.test; Can’t find record in ‘test’, Erro…

【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技術設…

Angular中的ActivatedRoute和Router

Angular中的ActivatedRoute和Router解釋 在Angular中&#xff0c;ActivatedRoute和Router是兩個核心的路由服務。他們都提供可以用來檢查和操作當前頁面路由信息的方法和屬性。 ActivatedRoute ActivatedRoute是一個保存關于當前路由狀態&#xff08;如路由參數、查詢參數以…

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;…