华为2019实习第一批机试第三题(状态转移题)

博主在机试结束后才完成规则的Java实现,不确定是否能通过测试。主要围绕Java实现规则展开。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

规则相同,机试结束后才做出来的,因此不知是否可以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);
				}
			}
		} 
		
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值