打卡内容:oj基础89 90 91+U12B部分P10 11 12+单词3*100
oj基础89
输入一串字符,其长度小于200,判断该串字符是否构成回文。
cpp
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main()
{
string s;
while(getline(cin,s)){
string s_old=s;
reverse(s.begin(),s.end());
if(s==s_old){
cout<<"Yes"<<endl;
}else{
cout<<"No"<<endl;
}
}
return 0;
}
注意reverse函数返回类型是void,所以要先保存原s的副本,再翻转s,比较副本与翻转后的字符串,从而判断是否为回文。不能string snew=reverse...,这样会编译报错
oj基础90
对于一个字符串,编程找出其中的所有整数。例如,字符串"a12bc34d05",其中有整数12、34、5。
cpp
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int main() {
string line;
while (getline(cin, line)) {
vector<int> numbers;
int i = 0;
while (i < line.length()) {
if (isdigit(line[i])) {
string numStr = "";
// 收集连续的数字
while (i < line.length() && isdigit(line[i])) {
numStr += line[i];
i++;
}
// 转为整数(自动处理前导零)
int num = stoi(numStr);
numbers.push_back(num);
} else {
i++;
}
}
// 输出:个数 + 所有整数
cout << numbers.size();
for (int num : numbers) {
cout << " " << num;
}
cout << endl;
}
return 0;
}
oj基础91
国际乒联主席沙拉拉自从上任以来就立志于推行一系列改革,以推动乒乓球运动在全球的普及。其中11分制改革引起了很大的争议,有一部分球员因为无法适应新规则只能选择退役。明明就是其中一位,他退役之后走上了乒乓球研究工作,意图弄明白11分制和21分制对选手的不同影响。在开展他的研究之前,明明首先需要对他多年比赛的统计数据进行一些分析,所以需要你的帮忙。 (注:11(21)分制,在一局比赛中,选手A先得到11(21)分且此时领先选手B 2分或2分以上时,则选手A赢得此局;若当双方打成10(20)平后,则先多得2分的一方为胜方,赢得此局。)
明明通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在11分制和21分制下,双方的比赛结果(截至记录末尾)。一局比赛的开始比分为0比0。 比如现在有这么一份记录,(其中W表示明明获得一分,L表示明明的对手获得一分):
WWWWWWWWWWWWWWWWWWWWWWLW
在11分制下,此时比赛的结果是明明第一局11比0获胜,第二局11比0获胜,正在进行第三局,当前比分1比1。
在21分制下,此时比赛结果是明明第一局21比0获胜,正在进行第二局,当前比分2比1。
再如有这么一份记录,(其中W表示明明获得一分,L表示明明的对手获得一分):
WLWLWLWLWLWLWLWLWLWLWLWLWL
在11分制下,此时比赛的结果是明明和对手打成13比13,这局比赛仍没有分出胜负,因为任何一方都没有领先其对手2分。
在21分制下,此时比赛的结果是明明和对手打成13比13,这局比赛仍在进行中。
由于明明参加过多年的比赛,比赛的数据量相当庞大,如果仅仅使用手工统计,在短时间内统计出结果对于明明来说是相当困难的。因此明明求助于你,希望你能写一个程序,帮助他快速地统计出结果来。
明明的问题可以归结为:给你一系列的比赛数据(WL形式),分别按照11分制和21分制的比赛规则进行统计,然后输出统计结果。
cpp
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 模拟函数
vector<pair<int, int>> simulate(const string& s, int target) {
vector<pair<int, int>> games;
int a = 0, b = 0; // 当前局比分
for (char c : s) {
if (c == 'W') {
a++;
} else if (c == 'L') {
b++;
}
// 判断是否赢了一局
if ((a >= target || b >= target) && abs(a - b) >= 2) {
games.push_back({a, b});
a = 0;
b = 0;
}
}
// 如果还有未结束的局,也要输出
if (a > 0 || b > 0) {
games.push_back({a, b});
}
return games;
}
int main() {
string line;
bool firstCase = true;
while (getline(cin, line)) {
// 找 'E' ,截断
size_t ePos = line.find('E');
string valid = (ePos != string::npos) ? line.substr(0, ePos) : line;
// 模拟 11 分制和 21 分制
auto games11 = simulate(valid, 11);
auto games21 = simulate(valid, 21);
if (!firstCase) {
cout << endl;
}
firstCase = false;
// 输出 11 分制结果
for (auto& game : games11) {
cout << game.first << ":" << game.second << endl;
}
cout << endl;
// 输出 21 分制结果
for (auto& game : games21) {
cout << game.first << ":" << game.second << endl;
}
}
return 0;
}
翻译
P10
了解事物的运作原理,以及学习如何组装、拆卸或修理它们,是许多职业面临的重要挑战。维护工程师通常需要花费大量时间研读手册和文档,因为往往不可能将所有操作步骤都熟记于心。然而,增强现实(AR)可以直接在工人的视野中呈现指令,将其叠加显示。这不仅能提供更有效的培训,更重要的是,它允许受过较少培训的人员也能正确执行工作。
P11
如果需要人工支持,AR可以为物理任务的实时移动远程协作提供共享的视觉空间。采用这种方法,远程专家可以独立于本地用户的当前摄像头位置来探索现场,并通过空间注释进行交流,这些注释可以立即在AR视图中被本地用户看到。通过实时视觉跟踪和重建,可以实现这一点,从而消除了对环境进行准备或仪器化的需求。AR远程呈现结合了实时视频会议和远程场景探索的优势,将其整合为一个自然的协作界面。
P12
目前已经有各种各样的AR浏览器应用程序可供使用。这些应用程序旨在传递用户环境中感兴趣地点的相关信息,这些信息叠加在设备摄像头的实时视频之上。感兴趣地点要么以地理坐标给出并通过手机传感器(GPS、指南针读数)识别,要么通过图像识别来识别。AR浏览器有明显的局限性,例如GPS精度可能较差,且增强功能仅针对单个点而非完整物体。尽管如此,得益于智能手机的普及,这些应用程序随处可见,且由于AR浏览器内置的社交网络功能,其使用率正在增长。图12B-2显示了AR浏览器Yelp Monocle,它集成在社交商务评论应用Yelp中。
单词 100*3组
