#P1432. 2023.08.06-第一题-米小游学英语
-
1000ms
Tried: 371
Accepted: 138
Difficulty: 3
所属公司 :
米哈游
时间 :2023年8月06日
-
算法标签>模拟
2023.08.06-第一题-米小游学英语
思路:模拟
题目的意思很简单,有t组数据,每组数据中,从前往后,每有一个相同的单词,计一分,不同则扣一分。如果分数扣到负数,就停止比对。然后输出一共有多少组分数在0分以上。
按题意进行模拟即可。
时间复杂度O(N)
代码
C++
#include <bits/stdc++.h>
using namespace std;
int ans = 0; // 答案
int n; // 单组测试中说的单词数
vector<string> a, b; // 用于存储老师和塔子哥说的单词
string s;
int main() {
int T;
cin >> T;
while (T--) {
a.clear();
b.clear();
cin >> n;
// 老师
for (int i = 0; i < n; i++) {
cin >> s;
a.push_back(s);
}
// 塔子哥
for (int i = 0; i < n; i++) {
cin >> s;
b.push_back(s);
}
int now = 0; // 记录当前分数
// 比较老师和塔子哥说的单词
for (int i = 0; i < n; i++) {
if (a[i] != b[i]) now--; // 如果单词不同、
else now++; // 如果单词相同
// 如果分数变为负数,本次测试失败
if (now < 0) break;
}
if (now >= 0) ans++;
}
cout << ans << endl;
return 0;
}
python
ans = 0 # 答案
T = int(input())
while T > 0:
n = int(input()) # 单组测试中说的单词数
a = [] # 用于存储老师说的单词
b = [] # 用于存储塔子哥说的单词
# 老师说的单词
a_input = input().split()
for word in a_input:
a.append(word)
# 塔子哥说的单词
b_input = input().split()
for word in b_input:
b.append(word)
now = 0 # 记录当前分数
# 比较老师和塔子哥说的单词
for i in range(n):
if a[i] != b[i]:
now -= 1 # 如果单词不同
else:
now += 1 # 如果单词相同
# 如果分数变为负数,本次测试失败
if now < 0:
break
if now >= 0:
ans += 1
T -= 1
print(ans)
Java
import java.util.ArrayList;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int ans = 0; // 答案
int n; // 单组测试中说的单词数
ArrayList<String> a = new ArrayList<>(); // 用于存储老师和塔子哥说的单词
ArrayList<String> b = new ArrayList<>(); // 用于存储老师和塔子哥说的单词
String s;
Scanner scanner = new Scanner(System.in);
int T = scanner.nextInt();
while (T > 0) {
a.clear();
b.clear();
n = scanner.nextInt();
// 老师
for (int i = 0; i < n; i++) {
s = scanner.next();
a.add(s);
}
// 塔子哥
for (int i = 0; i < n; i++) {
s = scanner.next();
b.add(s);
}
int now = 0; // 记录当前分数
// 比较老师和塔子哥说的单词
for (int i = 0; i < n; i++) {
if (!a.get(i).equals(b.get(i))) now--; // 如果单词不同
else now++; // 如果单词相同
// 如果分数变为负数,本次测试失败
if (now < 0) break;
}
if (now >= 0) ans++;
T--;
}
System.out.println(ans);
}
}
题目内容
米小游读小学了,学校里新开了英语课。
某一天老师进行了一对一的口语考试,考试内容为复述老师说的话。考试要求每个人一共进行t次测试,每次测试中,老师会说一句话,包含n个单词,米小游每复述出一个单词,就能够获得一分,但是当分数低于0时,本次测试就会结束,并且该次测试未通过。
米小游英语很差,因此他想知道自己一共能通过多少次测试。
输入描述
第一行输入一个正整数t,代表米小游需要进行的测试数量
接下来的3∗t行,每3行用于描述一次测试:
第一行输入一个正整数n,代表老师说的一句话包含的单词数量。
第二行输入n个仅由小写字母组成的字符串,用空格隔开。代表老师说的单词。
第三行输入n个仅由小写字母组成的字符串,用空格隔开。代表米小游复述的话。
1≤t≤10
1≤n≤100
单词的长度均不超过10。
输出描述
一个整数,代表米小游最终通过了多少次测试。
样例
输入输出示例仅供调试,后台判题数据一般不包含示例
输入
3
2
hello hello
hello hello
3
how are you
hwo are you
4
how old are you
how old are yuo
输出
2