Main.rar

• 天涯浪子2
了解作者
• Java
开发工具
• 1KB
文件大小
• rar
文件格式
• 0
收藏次数
• 1 积分
下载积分
• 0
下载次数
• 2020-03-23 13:21
上传日期
CCF CCSP比赛，2019年12月第四题满分答案
Main.rar
• Main.java
4.4KB

package t3_5; import java.util.Scanner; import java.util.HashMap; import java.util.Stack; public class Main { public static void main(String[] args) { Scanner sca=new Scanner(System.in); String s=sca.nextLine(); int n=Integer.valueOf(s); for(int i=0;i<n;i++) { s=sca.nextLine(); String[] equation=s.split("="); int val=1; HashMap<String,Integer> fin=new HashMap<>(); for(int equa=0;equa<2;equa++) { val=equa*-2+1; String[] expr=equation[equa].split("[+]"); Stack<Integer> stack = new Stack<>(); for(int j=0;j<expr.length;j++) { Node node=new Node();//为了方便对嵌套做处理 char[] formula=expr[j].toCharArray(); int coef=1;//首位置的系数 String coefs=new String(); if(Character.isDigit(formula[0])) { coefs=digit(formula,0); coef=Integer.valueOf(coefs); } for(int k=coefs.length();k<formula.length;k++) { if(formula[k]=='(') { Node child = new Node(); node.child = child; child.parent = node; node = child; if(Character.isDigit(formula[k+1])) { String stacks=digit(formula,k+1); stack.add(Integer.valueOf(stacks)); k+=stacks.length(); } else stack.add(1); } else if(formula[k]==')') { int dig=1; if(k+1<formula.length&&Character.isDigit(formula[k+1])) { String digs=digit(formula,k+1); dig=Integer.valueOf(digs); k+=digs.length(); } node = node.parent; moveMap(node.map, node.child.map, stack.pop()*dig); } else { int dig=1; if(k+1<formula.length) { if(Character.isDigit(formula[k+1])) { String digs=digit(formula,k+1); dig=Integer.valueOf(digs); if(node.map.get(String.valueOf(formula[k]))!=null) dig+=node.map.get(String.valueOf(formula[k])); node.map.put(String.valueOf(formula[k]), dig); k+=digs.length(); } else if(Character.isLowerCase(formula[k+1])) { String str=formula[k]+""+formula[k+1]; k++; if(k+1<formula.length&&Character.isDigit(formula[k+1])) { String digs=digit(formula,k+1); dig=Integer.valueOf(digs); k+=digs.length(); } if(node.map.get(str)!=null) dig+=node.map.get(str); node.map.put(str, dig); } else { if(node.map.get(String.valueOf(formula[k]))!=null) dig+=node.map.get(String.valueOf(formula[k])); node.map.put(String.valueOf(formula[k]), dig); } } else { if(node.map.get(String.valueOf(formula[k]))!=null) dig+=node.map.get(String.valueOf(formula[k])); node.map.put(String.valueOf(formula[k]), dig); } } } moveMap(fin, node.map, coef*val); } } boolean judge = true; for ( String str: fin.keySet() ) { if ( fin.get(str) != 0 ) { judge = false; break; } } if ( judge ) System.out.println("Y"); else System.out.println("N"); } sca.close(); } public static String digit(char[] formula,int i) { String dig=formula[i]+""; int length=formula.length; while(i+1<length) { if(Character.isDigit(formula[i+1])) { dig+=formula[i+1]; i++; } else break; } return dig; } public static void moveMap(HashMap<String,Integer> fin,HashMap<String,Integer> map,int dig) { for(String str:map.keySet()) { if ( !fin.containsKey(str)) fin.put(str, map.get(str)*dig); else fin.put(str, fin.get(str)+map.get(str)*dig); } } } class Node { HashMap<String, Integer> map = new HashMap<>(); Node child = null, parent = null; }

相关推荐
• mota.rar
使用cocos2d-x开发的魔塔小游戏的源码，工具使用的是vs2010
• cocos2d-x魔塔源代码
基于cocos2d-x手机游戏魔塔源代码
• src.rar
CCF CCSP 2019年9月比赛全五题答案
• SIM800C_MQTT.rar
使用SIM800C模块，使用MQTT协议，连接中国移动onenet平台，能实现数据的订阅、发布、存储等
• 卷积神经网络
这是卷积神经网络的一个实际用例，已经调试好了，能够在matlab上成功运行，适合从事卷积神经网络（CNN）研究的人员学习使用。