化學方程式,也稱為化學反應方程式,是用化學式表示化學反應的式子。給出一組化學方程式,請你編寫程式判斷每個方程式是否配平。
本題給出的化學方程式由大小寫字母、數字和符號組成,不會出現其他字元。(詳見輸入樣例)
判斷輸入的化學方程式是否配平,是則輸出y,否則輸出n。
第一行乙個正整數n。
接下來n行,每行乙個化學方程式。
n行。配平輸出y,否則輸出n。
2
h2+o2=h2o
h2+cl2=2hcl
n
y
得滿分需要處理括號,下面的程式沒處理括號,可得60分。
#include
#include
#include
#include
using namespace std;
const
int n=
1e3+20;
char s[n]
;int len,a[n]
,b[n]
;bool shu
(int k)
bool da
(int k)
bool xiao
(int k)
//處理乙個化學式,p代表等號的左側或右側,st是開始位置,en是終止位置,k為係數
void
fun(
int*p,
int st,
int en,
int k)
else
int tz=0;
while
(z<=en&&
shu(z))if
(!tz)tz=1;
p[u]
+=k*tz;
i=z;
}return;}
intmain()
int v=0;
while
(v//處理等號左側 if(
!tz)tz=1;
//確定化學式起始位置
int st=v;
while
(v!='+'
)v++
;fun
(a,st,v-
1,tz)
; v++;}
while
(v//處理等號右側 if(
!tz)tz=1;
//確定化學式起始位置
int st=v;
while
(v!='+'
)v++
;fun
(b,st,v-
1,tz)
; v++;}
//判斷是否配平
int flag=0;
for(
int i=
0;i(a[i]
!=b[i])if
(flag)
printf
("n\n");
else
printf
("y\n");
}return0;
}
CCF 2019 12 3 化學方程式(80分)
只考慮不含巢狀括號的情況 80分 思路 注 未用map儲存,使用vector儲存元素和個數 1 是否為 以 為界,將方程式分為左右兩部分 2 是否為 以 為界,得到每一項 3 是否為數字 需要有對應的變數記錄數字前一項的內容 數字前一項為字母 乘以對應元素 數字前一項是否為 乘以括號對應元素 否則,...
201912 3 化學方程式
試題編號 201912 3 試題名稱 化學方程式 時間限制 1.0s 記憶體限制 512.0mb 前四個測試點還是很好寫的,不過加入小寫字母要注意cu as cs au這種情況,不能只是判斷字元種類的數目是否相同 include include include include using names...
CCF 大模擬之化學方程式 201912 3
給出化學方程式,判斷是否配平,所有方程式符合規範 例如 h2 o2 h2o 2h2 o2 2h2o 解題思路 include using namespace std struct elem inttodigit string equat,int i return dig void calcuelem...