• 天涯浪子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)研究的人员学习使用。
    • android从bootloader到launcher启动流程整理
      讲述android 开机流程 从boot rom---bootloader---init--zygote---systemserver---ams 并附上自己整理的每个流程的流程图 ,清晰熟悉android 启动流程
    • matlabpam代码-dsp-library:用于光通信的MATLABDSP函数库
      matlab pam代码 DSP库 该项目包含几种不同的功能,可将DSP算法应用于光通信。 这些功能适用于相干和非相干(PAM,DMT)光通信。 大多数功能是相互独立的。 因此,该代码中的功能可以轻松使用,并与其他DSP功能结合使用。 用法 功能列表以及简短说明在文件中。 输入和输出参数的描述在每个函数的标题中。 讯号 通常,输入(和输出)信号在第一维度上具有时间(例如,列向量),而第二维度用于一次管理多个信号(例如,不同的极化,不同的参数等)。 之所以选择这种约定,是因为MATLAB通过将列保留在内存的连续部分中来存储矩阵,因此,这种约定比其他方法(行向量)要快。 参数 大多数功能使用参数结构作为输入参数。 函数中使用的参数的描述通常在标头中,而coherent-dsp函数的默认参数在文件中。 参考 执照 此代码在下发布。
    • 有关多目标跟踪的PHD滤波的一些资料
      一些关于多目标跟踪的新的文献,主要是有关概率假设密度(PHD)的
    • 基于python开发的全国新工商采集工具 v1.2版本
      这个软件是通过scrapy爬虫框架结合代理IP池再加上request模拟请求技术以及验证码识别技术,可以做到日更新采集全国新工商信息。采集的数据自动存储在mysql数据库表里,可下载全量1.8亿多企业工商基本信息和36维度的详细信息.支持sql和excel导出数据包格式。
    • matlab匹配滤波代码-matlab_for_thesis:Matlab博士学位论文代码
      matlab匹配滤波代码博士论文的MATLAB代码 博士论文的MATLAB代码的一部分,“井田双色散水下声通道中的多载波通信”。 函数下的func_JingTian文件夹 FUNC_JINGTIAN包含多载波通信中一些通常需要的功能: OFDM调制/解调模块,包括几种数据辅助的信道估计方法和差分解调; 快速实现GFDM和C-FBMC调制/解调,分别包括时域和频域的迫零(ZF)和匹配滤波(MF)均衡; 为OFDM信道估计中使用的压缩感测方法计算字典的功能; 增加信道效应,施加宽带多普勒失真的功能; 通过线性调频Z变换(CZT)以任意精度对频域中的信号进行重采样; Hermite函数合成的信号之间的交叉歧义函数的计算。 演示文件夹 以下列出了四个演示 demo1:使用基本追踪(BP)算法形式的压缩感知方法对OFDM进行稀疏2-D信道估计; demo2:比较基本数据辅助OFDM信道估计算法,包括常规频域插值和基于IDFT的变换域方法; demo3:圆形滤波器组多载波(C-FBMC / OQAM)的基于DFT特征向量的原型滤波器合成; demo4:用于广义频分复用(GFDM)的辅助日期辅助无干