信息竞赛进阶指南--递归法求中缀表达式的值,O(n^2)(模板)
生活随笔
收集整理的這篇文章主要介紹了
信息竞赛进阶指南--递归法求中缀表达式的值,O(n^2)(模板)
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
// 遞歸法求中綴表達(dá)式的值,O(n^2)
int calc(int l, int r) {// 尋找未被任何括號(hào)包含的最后一個(gè)加減號(hào)for (int i = r, j = 0; i >= l; i--) {if (s[i] == '(') j++;if (s[i] == ')') j--;if (j == 0 && s[i] == '+') return calc(l, i - 1) + calc(i + 1, r);if (j == 0 && s[i] == '-') return calc(l, i - 1) - calc(i + 1, r);}// 尋找未被任何括號(hào)包含的最后一個(gè)乘除號(hào)for (int i = r, j = 0; i >= l; i--) {if (s[i] == '(') j++;if (s[i] == ')') j--;if (j == 0 && s[i] == '*') return calc(l, i - 1) * calc(i + 1, r);if (j == 0 && s[i] == '/') return calc(l, i - 1) / calc(i + 1, r);}// 首尾是括號(hào)if (s[l] == '('&&s[r] == ')') return calc(l + 1, r - 1);// 是一個(gè)數(shù)int ans = 0;for (int i = l; i <= r; i++) ans = ans * 10 + s[i] - '0';return ans;
}
總結(jié)
以上是生活随笔為你收集整理的信息竞赛进阶指南--递归法求中缀表达式的值,O(n^2)(模板)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 我叫mt4石碑任务在哪接(汉典我字的基本
- 下一篇: 信息竞赛进阶指南--单调队列模板