输入化学方程式,判断其格式上是否正确,运用C程序的语言代码的方式应该如何实现的?

Problem Description
还记得高中的化学方程式吗?当时化学课是我的最爱,老师常常需要我们用化学方程式来反应一种化学变化。但是粗心的我,常常在写化学方程式的时候,在一些细节上出问题。现在我们有很多的化学方程式,但是不知道其是否正确,需要你用编程来判断。
首先我们以例子来说明下化学方程式的格式:
2H2+O2==2H2O
3Fe + 2O2==Fe3O4
CaO + H2O == Ca(OH)2
1) 左边有N种化学品,右边有M种化学品,其中N>=1且M>=1,在每种化学品中,用一个大写字母或者一个大写字母加一个小写字母表示一种化学元素,每种化学元素在表示化学变化的符号“==”前后都出现。多于N>1和M>1的情况,相邻的两种化学品之间用一个“+”来连接。
2) 在每种元素(或者每种根,后面说明)后面出现的系数,是角标,表示这个元素或者根在这个化学品中出现的比例(主要和元素的最外层和次外层电子分布有关系,在这里不考虑具体的含义,只考虑格式),同时最先在这个化学品最前面的系数,表示这个化学方程式中,这种化学品参与化学反应的比例。根据守恒定理,前后出现的化学元素的个数必须相等。一般对于数字1都不用显式写出来(数据中也同样不会出现系数1),系数同样不为0(数据中也不出现)。
3) 对于一些由多个元素组成的串,表示一个“根”,如上面例子中的OH是一个氢氧根,也叫羟基。常常一个根必须由多个元素组成(单个元素不成为根),而在表示它们在化学品中出现的比例时,为了体现它们是一个小的部分,用括号包括起来(括号不能嵌套),再在其后加上系数,所以对于Ca(OH)2中,氧元素(O)与氢元素(H)同时出现两次,但是如果根只出现一次,可以加括号也可以不加,如NaOH。
4) 在一个化学方程式中,空格的出现一般是不受限制的,但是不能将同一个化学品内的元素以及所有与它们相关的系数分开,产生符号也不能分开。
5) 对于其他的一些特殊情况,如可逆化学方程式(事实上大部分的化学变化是可逆过程)用双向箭头表示,有些产生气体的分子后面需要用向上的箭头表示,在产生过程上还有可以加一些外界物理条件,产生沉淀需要说明等,我们不予考虑。

Input
输入有多个case,每个case占一行,每行表示一个化学方程式

Output
对于每个化学方程式,判断其格式上是否正确(这里不考虑意义上的正确性问题)。如果正确输出YES,否则NO。所以输入字符都是英文状态的。每个串长不超过100个字符,每种化学品的长度不超过20个字符。

Sample Input
2H2+O2==2H2O

Sample Output
YES

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!

相似问题

0
matlab中对方程求导的问题
0
求一个线性规划单纯形法求一般方程的C/C++程序。
1
C语言,Equations,方程的系数计算方程的结果
1
这个关于方程解的程序错在哪了
2
C语言计算:化学方程式,判断其格式上是否正确(这里不考虑意义上的正确性问题)。如果正确输出YES,否则NO
0
有关多项式方程的极值的计算的一个问题利用C语言的解答的方式是什么思路
1
算法的解法,求方程的根,具体运用的C语言的办法的思路?
0
函数方程等式的递归的一个比较的算法,如何利用C语言的思路去实现的
0
考虑泊松方程边值问题
1
这段代码是用最小二乘法拟合椭圆方程来判断人眼的状态的么?
1
求一元二次方程的根(改了一晚上,还是不正确,这是我第一次的程序)(希望大佬们指点一二,感谢感谢)
0
这是写的关于一元二次方程根求解的代码,不知道为什么在Openjudge上总显示错
1
python新人,牛顿迭代中循环判断">"和"<"有什么分别
0
MATLAB含有三角函数矩阵的方程求解
3
为什么第一个scanf里%f间加逗号输入时就会跳过第二个scanf,而去掉逗号就不会了??
0
matlab如何将多个方程式综合为一个方程式
0
线段与圆求交点,所求交点不在圆上,但是在直线上,不知为何?
1
怎么用c#编辑函数一元二次方程,abc从键盘输入,实现根据a,b,c的值,△的值判断根的情况,并计算根?
1
(simulink)永磁同步电机(S函数搭建)的转子位置动态面跟踪时改变给定频率>1,转子位置不正确,跟不上给定
0
求大佬帮我看一下我的四阶龙格库塔法求解常微分方程组的MATLAB程序对吗