CCF 大模擬之化學方程式 201912 3

2021-10-10 19:20:28 字數 1695 閱讀 2230

給出化學方程式,判斷是否配平,所有方程式符合規範

例如:h2+o2=h2o

2h2+o2=2h2o

解題思路

#include

using

namespace std;

struct elem};

inttodigit

(string equat,

int&i)

return dig;

}void

calcuelem

(string equat,mapint>

&m) vector vec_elem;

//容器存每一種遇到的元素或者『( 』 『 )』

for(

;i(vec_elem[j]

.name[0]

==')'

) vec_elem[j]

.name=

"*";

else}}

else

i--;//todigit()處理到數字的下一位

}else

if(equat[i]

=='('

||equat[i]

==')'

)elseif(

isupper

(equat[i]))

vec_elem.

push_back

(elem

(name,1)

);}}

for(

int i=

0;isize()

;i++)}

bool

compare

(mapint> m1,mapint> m2)}}

return

true;}

intmain()

else

if(equation[i]

=='='

)else str+

=equation[i];}

calcuelem

(str,map2)

;bool res=

compare

(map1,map2);if

(res==1)

else cout<<

"false"

<}}

結果

11

h2+o2=h2o

false

2h2+o2=2h2o

true

h2+cl2=2nacl

false

h2+cl2=2hcl

true

ch4+2o2=co2+2h2o

true

cacl2+2agno3=ca(no3)2+2agcl

true

3ba(oh)2+2h3po4=6h2o+ba3(po4)2

true

3ba(oh)2+2h3po4=ba3(po4)2+6h2o

true

4zn+10hno3=4zn(no3)2+nh4no3+3h2o

true

4au+8nacn+2h2o+o2=4na(au(cn)2)+4naoh

false

cu+as=cs+au

false

未嚴格按照原題輸入輸出編寫**,如有不足多多包涵

CCF 201912 3 化學方程式

化學方程式,也稱為化學反應方程式,是用化學式表示化學反應的式子。給出一組化學方程式,請你編寫程式判斷每個方程式是否配平。本題給出的化學方程式由大小寫字母 數字和符號組成,不會出現其他字元。詳見輸入樣例 判斷輸入的化學方程式是否配平,是則輸出y,否則輸出n。第一行乙個正整數n。接下來n行,每行乙個化學...

201912 3 化學方程式

試題編號 201912 3 試題名稱 化學方程式 時間限制 1.0s 記憶體限制 512.0mb 前四個測試點還是很好寫的,不過加入小寫字母要注意cu as cs au這種情況,不能只是判斷字元種類的數目是否相同 include include include include using names...

CCF 2019 12 3 化學方程式(80分)

只考慮不含巢狀括號的情況 80分 思路 注 未用map儲存,使用vector儲存元素和個數 1 是否為 以 為界,將方程式分為左右兩部分 2 是否為 以 為界,得到每一項 3 是否為數字 需要有對應的變數記錄數字前一項的內容 數字前一項為字母 乘以對應元素 數字前一項是否為 乘以括號對應元素 否則,...