规则相同,机试结束后才做出来的,因此不知是否可以AC。
java实现
import java.util.*;
public class Main{
public static void main(String[] args) {
Map<String,String> map1 = new HashMap<String,String>();
Map<String,String> map2 = new HashMap<String,String>();
Map<String,String> map3 = new HashMap<String,String>();
Map<String,Map<String,String>> m = new HashMap<String,Map<String,String>>();
map1.put("t1","s2");
m.put("s1",map1);
map2.put("t2","s3");
map2.put("t3","s4");
m.put("s2",map2);
map3.put("t4","s5");
m.put("s4",map3);
/* Iterator<Map.Entry<String,Map<String,String>>> it=m.entrySet().iterator();
while(it.hasNext()){
Map.Entry<String,Map<String,String>> entry=it.next();
System.out.println("key="+entry.getKey()+","+"value="+entry.getValue());
} */
String s = "obj001|t0 obj001|t1 obj001|t2 obj001|kill";
String[] st = s.split(" ");
String[][] cur = new String[10][2];
int num = 0;
for(int i = 0; i < st.length; i++) {
String[] str = st[i].split("\\|");
//特判,创建对象
if("t0".equals(str[1])) {
cur[num][0] = str[0];
cur[num][1] = "s1";
String c = cur[num][0] + "|" + cur[num][1];
System.out.println(c);
num++;
cur[num][0] = "";
continue;
}
//判断是哪个对象,再根据对象的当前状态转移下一个状态,无效输入则不输出
for(int n = 0; n <= num; n++) {
if(cur[n][0].equals(str[0])) {
//如果输入是kill,则结束杀死当前对象。
if("kill".equals(str[1])) {
cur[n][1] = "killed";
String c = cur[n][0] + "|" + cur[n][1];
System.out.println(c);
continue;
}
cur[n][1] = m.get(cur[n][1]).get(str[1]);
String c = cur[n][0] + "|" + cur[n][1];
if(cur[n][1] != null)
System.out.println(c);
}
}
}
}
}