我正試圖通過給定的輸入來獲取CFG的摘要。我必須列出終端出現次數的次數。但是,我在使用同一規則計算多個終端時遇到了問題。如何讓數組中的元素不增加,如果它已經增加了循環中的運行?
for (int i = 0; i < cfg.size(); i++)
{
for (int j = 0; j < cfg[i].size(); j++)
{
for (int k = 0; k < terminal.size(); k++)
{
if (strcmp(cfg[i][j].c_str(), terminal[k].c_str()) == 0)
{
//TO-DO if counter[k] already incremented do not increment counter[k] again
counter[k]++;
break;
}
}
}
}
例如,如果規則是
Z -> a b b b
它將返回3 b當正確的答案應該是1
如何我如何我可以離開這條規則的任何幫助它已經被計算後會很好。謝謝
爲什麼'strcmp'如果你有權訪問'std :: string'? –
如果目標是不增加,你爲什麼遞增?只需將'counter [k]'設置爲1或者我錯過了什麼? – PaulMcKenzie
目標是每當終端在規則的右側結束時增加。如果終端多次出現,如果我已經算過第一個,我就不應該增加。 – muchtolearn