我的做法没有涉及什么语法树,主要是字符串处理,水平略搓写的有点麻烦,题目说忽略空格,youcase比如 a++有可能是a + +,导致WA,后来加上了预处理去掉所有空格才AC。
#include<stdio.h> #include<string.h> char tmpStr[200]; char expr[200]; int appeared[26]; int plus[26]; int minus[26]; char afterExp[200]; int val; void print() { printf("Expression: %s\n", tmpStr); printf(" value = %d\n", val); int j; for (j = 0; j < 26; j++) { if (appeared[j]) { char ch = j + 'a'; int value = j + 1; if (plus[j] != 0) value++; if (minus[j] != 0) value--; printf(" %c = %d\n", ch, value); } } } void init() { val = 0; int i; for (i = 0; i < 26; i++) { appeared[i] = 0; plus[i] = 0; minus[i] = 0; } } void evaluateAndPrint() { init(); int len = strlen(expr); int idx = 0; int i; for (i = 0; i < len; i++) { if (expr[i] >= 'a' && expr[i] <= 'z') { appeared[expr[i] - 'a'] = 1; afterExp[idx++] = expr[i]; if (i - 2 >= 0 && expr[i - 1] == '+' && expr[i - 2] == '+') plus[expr[i] - 'a'] = -1; if (i - 2 >= 0 && expr[i - 1] == '-' && expr[i - 2] == '-') minus[expr[i] - 'a'] = -1; if (i + 2 < len && expr[i + 1] == '+' && expr[i + 2] == '+') plus[expr[i] - 'a'] = 1; if (i + 2 < len && expr[i + 1] == '-' && expr[i + 2] == '-') minus[expr[i] - 'a'] = 1; } else if (expr[i] == '+' || expr[i] == '-') { if (i > 0 && i < len - 1 && expr[i - 1] != expr[i] && expr[i] != expr[i + 1]) afterExp[idx++] = expr[i]; } } afterExp[idx] = 0; int flag = 1; for (i = 0; i < idx; i++) { if (afterExp[i] >= 'a' && afterExp[i] <= 'z') { int tmp = afterExp[i] - 'a' + 1; if (plus[afterExp[i] - 'a'] == -1) tmp++; if (minus[afterExp[i] - 'a'] == -1) tmp--; if (flag) val += tmp; else val -= tmp; } else if (afterExp[i] == '-') flag = 0; else if (afterExp[i] == '+') flag = 1; } print(); } int main() { while (gets(tmpStr)) { int i; int idx = 0; for (i = 0; i < strlen(tmpStr); i++) { if ((tmpStr[i] >= 'a' && tmpStr[i] <= 'z') || tmpStr[i] == '+' || tmpStr[i] == '-') expr[idx++] = tmpStr[i]; } expr[idx] = 0; evaluateAndPrint(); } return 0; }
相关推荐
session8-abdulgadir-open-source-platform-for-evaluating.pdf
Matlab Tutorial - 55 - Evaluating Derivatives at a Point.zip
ISO 20140-2:2018 Automation systems and integration - Evaluating
Evaluating Python expressions
在线社会网络中基于时序主题和链接状态的用户影响力度量,王峰,姜文君,社会影响力是指用户行为能够使得他的朋友产生相似的行为,对这一现象的研究对在线社交网络中的许多应用非常关键。现代社交网络中
TF Model building/training/evaluating for simple nlp task just by params configuration, training/evaluating monitor and params configure GUI with streamlit.
快速评估中缀表达希望您喜欢Swift的这个版本的“解析数学表达式”! 如果您想了解算法,请[LINK COMING SOON]。
Appendix C - Tuning Your Backup and Recovery Application Appendix D - Disaster Recovery Planning Kit—From End to Beginning Appendix E - Business Impact Analysis Planning Kit—The Storm Before ...
evaluating-machine-learning-models.pdf
完整英文版 ISO 20140-2:2018 Automation systems and integration - Evaluating energy efficiency and other factors of manufacturing systems that influence the environment:Environmental performance ...
HOTA - A Higher Order Metric for Evaluating Multi-object Tracking
标准可以在这里免费获取:https://store.ies.org/product/tm-30-20-ies-method-for-evaluating-light-source-color-rendition/ 软件输入测试光源的光谱功率分布(SPD),该分布应为401x1矩阵,代表测试光源SPD在380 -...
Evaluating harmonic-induced transformer heating-00484029pdf,Evaluating harmonic-induced transformer heating-00484029
USCAR-10-REV2 TEST FOR EVALUATING THE TORQUE-TENSION RELATIONSHIP OF BOTH EXTERNAL AND INTERNAL METRIC THREADED FASTENERS.pdf
IEC 60587-2022 Test methods for evaluating resistance to tracking and erosion.pdf
Evaluating Derivatives Principles and Techniques of Algorithmic Differentiation 自动微分算法的经典著作。作者是著名的AD软件包ADOL-C的创始人。这是第二部分。
Information Retrieval Implementing and Evaluating Search Engines Stefan B¨uttcher Charles L. A. Clarke Gordon V. Cormack
c) 2005IEEEtkde Toward the next generation of recommender systems - A survey of the state-of-the-art and possible extensions 3. 动手能力(实践算法-入门篇) a) 2004ACMtois Item-based top-N ...
GMW 15424-2012 Procedure for Evaluating Parting Lines.pdf
【最新版可复制文字】 JEDEC-JEP190-2022 Guideline for Evaluating dv_dt Robustness of SiC Power Devices, Version 1.0.pdf