NYOJ305 表达式求值

来源:互联网 发布:artoolkit linux 编辑:程序博客网 时间:2024/06/16 06:45

原题链接

这题要用到栈,由于递归与栈的亲密关系所以可以用递归。参考了原题的标程。

#include <stdio.h>#include <string.h>char str[301];int start;int max(int a, int b){return a > b ? a : b;}int min(int a, int b){return a < b ? a : b;}int val(){int v, n;switch(str[start]){case 'm': start += 4; if(str[start - 2] == 'n') return min(val(), val());else return max(val(), val());case 'a': start += 4;return val() + val();case ',':case ')': ++start; return val();default: sscanf(str + start, "%d%n", &v, &n);start += n; return v;}}int main(){int t;scanf("%d", &t);while(t--){scanf("%s", str);start = 0;printf("%d\n", val());}return 0;}


0 0
原创粉丝点击