AcWing 1995. 见面与问候(java 模拟+详细注释)
原题链接
简单
作者:
小名源治
,
2022-04-26 17:01:18
,
所有人可见
,
阅读 153
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
int B = input.nextInt();
int E = input.nextInt();
input.nextLine();
// 利用list集合存储每头牛在每个时刻走的方向
ArrayList<String > Blist = new ArrayList<>();
ArrayList<String > Elist = new ArrayList<>();
for (int i = 0; i < B; i++) {
String s = input.nextLine();
String[] cs = s.split(" ");//用空格将字符串分割
int j = Integer.valueOf(cs[0]);//牛牛往这个方向走的步数
for (int k = 0; k < j; k++) {
Blist.add(cs[1]);
}
}
for (int i = 0; i < E; i++) {
String s = input.nextLine();
String[] cs = s.split(" ");//用空格将字符串分割
int j = Integer.valueOf(cs[0]);//牛牛往这个方向走的步数
for (int k = 0; k < j; k++) {
Elist.add(cs[1]);
}
}
//2.用户输入完成
int ans = 0;//牛牛相遇的次数
int Bmoo = 0;//当前B的位置
int Emoo = 0;//当前E的位置
int t = 0;//当前时间t
//表示任意一头奶牛在走
while (t< Blist.size() || t< Elist.size()){
int lastB = Bmoo;//奶牛上一步所在的地方
int lastE = Emoo;//奶牛上一步所在的地方
if (t < Blist.size()){
String bb = Blist.get(t);
if ("L".equals(bb)){
Bmoo--;
}else {
Bmoo++;
}
}
if (t < Elist.size()){
if ("L".equals(Elist.get(t))){
Emoo--;
}else {
Emoo++;
}
}
//判断奶牛上一步不在同一个地方,这步在同一个地方说明相遇了
if (lastB!=lastE && Bmoo==Emoo){
ans++;
}
//时间+1
t++;
}
System.out.println(ans);
}
}