C++ 米哈游0806真题
最近开始遇到一些企业真题,还有遇到ACM模型输入不太熟练,写个博客自己记录一下,也分享给初学者。
1、学丘丘人讲话
输入格式:主要难点在于接取整行字符串,并且以空格为单位拆分每个单词。
思路:使用getline()函数读取一整行字符串,注意需要包含string头文件。读取整行字符串后,根据空格分隔。
// 分割字符串
vector<string> split_string(string str, string pattern) {
vector<string> result;
str += pattern;
int size = str.size();
for (int i = 0; i < size; i++) {
int pos = str.find(pattern, i);
if (pos < size) {
string s = str.substr(i, pos - i);
result.push_back(s);
i = pos + pattern.size() - 1;
}
}
return result;
}
如果遇到需要分隔字符串,并且转换成整型的时候,同样可以用该函数处理,字符串转整型可以用stoi()函数,函数示例如下:
// 处理字符串形式的输入数组格式
vector<int> split_string(string s, string pattern) {
vector<int> result;
s += pattern;
int size = s.size();
for (int i = 0; i < size; i++) {
int pos = s.find(pattern, i);
if (pos < size) {
string stemp = s.substr(i, pos - i);
int temp = stoi(stemp);
result.push_back(temp);
i = pos + pattern.size() - 1;
}
}
return result;
}
如,输入为[1,2,3,4,5]形式的字符串,处理成整型数组,包含1 2 3 4 5的5个数。
回到题目,思路就是直接模拟题意来写就行了。
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
// 分割字符串
vector<string> split_string(string str, string pattern) {
vector<string> result;
str += pattern;
int size = str.size();
str += pattern;
for (int i = 0; i < size; i++) {
int pos = str.find(pattern, i);
if (pos < size) {
string s = str.substr(i, pos - i);
result.push_back(s);
i = pos + pattern.size() - 1;
}
}
return result;
}
int main() {
int t;
cin >> t; // 输入测试用例数量
int res = 0; // 用于存储结果
for (int i = 0; i < t; i++) {
vector<string> qiuqiuren;
vector<string> xiaohong;
int n;
cin >> n; // 输入每个测试用例的字符串数量
cin.ignore(); // 忽略换行符
string line1, line2;
getline(cin, line1); // 读取第一个字符串数组
getline(cin, line2); // 读取第二个字符串数组
// 以空格分隔字符串
qiuqiuren = split_string(line1, " ");
xiaohong = split_string(line2, " ");
// 后续解题过程,模拟思路就行
int ans = 0;
bool flag = true;
for (int j = 0; j < n; j++) {
if (qiuqiuren[j].compare(xiaohong[j]) == 0) ans++;
else {
ans--;
if (ans < 0) {
flag = false;
break;
}
}
}
if (flag && ans >= 0) res++;
qiuqiuren.clear();
xiaohong.clear();
}
cout << res << endl; // 输出结果
return 0;
}