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

2021 RoboCom 世界机器人开发者大赛-高职组(复赛)解题报告 | 珂学家

前言

在这里插入图片描述


题解

2021 RoboCom 世界机器人开发者大赛-高职组(复赛)解题报告。

模拟题为主,包含进制转换等等。

最后一题,是对向量/自定义类型,重定义小于操作符。

在这里插入图片描述

7-1 人工智能打招呼

分值: 15分

考察点: 分支判定,判重技巧

#include <bits/stdc++.h>using namespace std;int main() {int n;cin >> n;set<string> hp;for (int i = 0; i < n; i++) {string id; cin >> id;if (hp.find(id) == hp.end()) {cout << "Hello " << id << ", how are you?\n";hp.insert(id);} else {cout << "Hi " << id<< "! Glad to see you again!\n";}}return 0;
}

7-2 人工智能数字翻译

分值: 20分
考察:进制转换,10和27进制互转

在这里插入图片描述

#include <bits/stdc++.h>using namespace std;int main() {string a;int d;cin >> a >> d;if (d == 10) {string res;int s = stoi(a);while (s > 0) {int r = s % 27;if (r >= 0 && r < 10) {res += (char)(r + '0');} else {res += (char)(r - 10 + 'A');}s /= 27;}if (res.empty()) res = "0";reverse(res.begin(), res.end());// 去掉前置多余的0if (res[0] == '0' && res.size() > 0) {int pos = res.size() - 1;for (int i = 0; i < res.size(); i++) {if (res[i] != '0') {pos = i;break;}}res = res.substr(pos);}cout << res << "\n";} else {int64_t res = 0;string s = a;for (char c: s) {if (c >= '0' && c <= '9') {res = res * 27 + (c - '0');} else {res = res * 27 + (c - 'A' + 10);}}cout << res << "\n";}return 0;
}

7-3 机器人拼图

分值: 20分

模拟
在这里插入图片描述


#include <bits/stdc++.h>using namespace std;int main() {int n, m;cin >> n >> m;vector<vector<int>> mat(n, vector<int>(m, 0));for (int i = 0; i < n * m; i++) {string op; cin >> op;int x = 0, y = 0;for (char c: op) {if (c == '1') {y = min(y + 1, m - 1);} else if (c == '3') {y = max(y - 1, 0);} else if (c == '2') {x = min(x + 1, n - 1);} else if (c == '4') {x = max(x - 1, 0);} else {if (mat[x][y] == 0) {mat[x][y] = i + 1;}}}}for (int i = 0; i < n; i++) {for (int j = 0; j < m; j++) {cout << mat[i][j] << " \n"[j == m - 1];}}return 0;
}

7-4 PAT基础级排名

分值: 20分

思路: 排序 + 分组循环

因为存在同分的情况,所以分组循环,是种优雅的写法

#include <bits/stdc++.h>using namespace std;struct Stu {string name;int score;
};int main() {int n, L;cin >>n >> L;vector<Stu> arr;for (int i = 0; i < n; i++) {Stu stu;cin >> stu.name >> stu.score;arr.push_back(stu);}sort(arr.begin(), arr.end(), [](auto &a, auto &b) {if (a.score != b.score) return a.score > b.score;return a.name < b.name;});int levels[6] = {0, 30, 50, 60, 80, 100}; auto resolve = [levels](int a) {for (int i = 5; i >= 0; i--) {if (a > levels[i]) return i + 1;}return 0;};int x = L + 1;int m = n;int acc = 0;int rank = 0;for (int i = 0;i < n; i++) {Stu &stu = arr[i];int level = resolve(stu.score);if (x > level) {m = m - acc;acc = 0;x = level;rank = 1;}acc++;if (acc > 1 && arr[i].score == arr[i - 1].score) {} else {rank = acc;}if (x != 0) {cout << stu.name << " " << x << " " << stu.score << "/" << levels[x] << " "<< rank << "/" << m << "\n";} else {cout << stu.name << "\n";}}return 0;
}

7-5 人工智能刑警

分值: 25分

思路: 自定义类型重定义小于操作符

因为这边采用map(底层是树),所以需要对自定义类型重定义小于操作符。

#include <bits/stdc++.h>using namespace std;struct T {vector<int> feature;bool operator<(const T&lhs) const {int n = feature.size();for (int i = 0; i < n; i++) {int v1 = feature[i], v2 = lhs.feature[i];if (v1 != v2) return v1 < v2;}return 0;}
};int main() {map<T, string> hp;int n, f;cin >> n >> f;for (int i = 0; i < n; i++) {T t;for (int j = 0; j < f; j++) {int v; cin >> v;t.feature.push_back(v);}string name; cin >> name;hp[t] = name;}while (true) {bool ok = true;T t2;for (int i = 0; i < f; i++) {int v; if (cin >> v && (v == 0 && i == 0)) {ok = false;break;}t2.feature.push_back(v);}if (!ok) break;if (hp.find(t2) != hp.end()) {cout << hp[t2] << "\n";} else {cout << "Pass"  << "\n";}}return 0;
}

写在最后

在这里插入图片描述

http://www.xdnf.cn/news/10733.html

相关文章:

  • C#学习12——预处理
  • 当 AI 超越人类:从技术突破到文明拐点的 2025-2030 年全景展望
  • Manus AI与多语言手写识别的创新革命:从技术突破到行业赋能
  • 第2章_Excel_知识点笔记
  • 第十三章 Java基础-特殊处理
  • 【iOS】多线程基础
  • ArrayList和LinkedList(深入源码加扩展)
  • Day-15【选择与循环】选择结构-if语句
  • Q:知识库-文档的搜索框逻辑是怎样的?
  • 解决VS Code误报Java问题的终极方法
  • 深入理解 Java 环境变量:从原理到实战配置指南
  • LangChain系列之LangChain4j集成Spring Bot
  • AI“实体化”革命:具身智能如何重构体育、工业与未来生活
  • Android 中的 DataBinding 详解
  • 在图像分析算法部署中应对流行趋势的变化|文献速递-深度学习医疗AI最新文献
  • 大模型赋能:金融智能革命中的特征工程新纪元
  • 兼容老设备!EtherNet/IP转DeviceNet网关解决储能产线通讯难题
  • Celery 核心概念详解及示例
  • 深入解析C++引用:从别名机制到函数特性实践
  • 【语义分割专栏】2:U-net原理篇(由浅入深)
  • Docker 在 AI 开发中的实践:GPU 支持与深度学习环境的容器化
  • 【结构型模式】装饰器模式
  • Nginx+Tomcat 负载均衡群集
  • Ubuntu 22.04 安装 Nacos 记录
  • WordPress 6.5版本带来的新功能
  • 腾讯 ovCompose 开源,Kuikly 鸿蒙和 Compose DSL 开源,腾讯的“双”鸿蒙方案发布
  • 云原生时代 Kafka 深度实践:05性能调优与场景实战
  • Vue3中Axios的使用-附完整代码
  • sqlite3 命令行工具详细介绍
  • 虚拟现实教育终端技术方案——基于EFISH-SCB-RK3588的全场景国产化替代