CCF 201912 3 化學方程式

2021-10-01 13:14:28 字數 1562 閱讀 6215

化學方程式,也稱為化學反應方程式,是用化學式表示化學反應的式子。給出一組化學方程式,請你編寫程式判斷每個方程式是否配平。

本題給出的化學方程式由大小寫字母、數字和符號組成,不會出現其他字元。(詳見輸入樣例)

判斷輸入的化學方程式是否配平,是則輸出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...