当前位置: 首页 > wzjs >正文

个人可以备案什么网站合肥网络科技有限公司

个人可以备案什么网站,合肥网络科技有限公司,两个wordpress文章同步,买了域名就可以做网站表达式求值 - OI Wiki 只含左结合的二元运算符的含括号表达式: 创建一个操作栈op, 数字栈st, 遍历整个表达式 若 1.左括号, 直接入op栈 2.右括号, 从栈顶一个一个拿出op进行计算, 知道遇见左括号 3.如果是数字, 直接入st栈 4.如果是操作符, 当栈顶操作符优先级大于等于当…

 

表达式求值 - OI Wiki

只含左结合的二元运算符的含括号表达式:

创建一个操作栈op, 数字栈st, 遍历整个表达式 若

1.左括号, 直接入op栈

2.右括号, 从栈顶一个一个拿出op进行计算, 知道遇见左括号

3.如果是数字, 直接入st栈

4.如果是操作符, 当栈顶操作符优先级大于等于当前运算符优先级时, 把op栈栈顶操作符一个一个拿出来运算

也可以用这个代码来输出后缀表达式, 遇到数字, 直接加入后缀表达式字符串, 对于操作符, 加入后缀表达式即为上述计算操作

如果加上一元运算符与右结合的运算符

如果是一元运算符, 可以加上一个is_single字段, 操作之后一直改变这个字段的值, 来判断这个运算符是否为一元运算符

如果由有右结合的运算符, 比如幂操作,  把

while (!op.empty() && priority(op.top()) >= priority(cur_op)) 

 改为

while (!op.empty() &&((left_assoc(cur_op) && priority(op.top()) >= priority(cur_op)) ||(!left_assoc(cur_op) && priority(op.top()) > priority(cur_op))))

 即 如果是右运算符  把"当栈顶操作符优先级大于等于当前运算符优先级时, 把op栈栈顶操作符一个一个拿出来运算" 改为大于而不是大于等于

代码

bool delim(char c) { return c == ' '; }bool is_op(char c) { return c == '+' || c == '-' || c == '*' || c == '/'; }int priority(char op) {if (op == '+' || op == '-') return 1;if (op == '*' || op == '/') return 2;return -1;   //这一句是必要的, 会把括号的优先级返回为-1
}void process_op(stack<int>& st, char op) {  // 也可以用于计算后缀表达式int r = st.top();                         // 取出栈顶元素,注意顺序st.pop();int l = st.top();st.pop();switch (op) {case '+':st.push(l + r);break;case '-':st.push(l - r);break;case '*':st.push(l * r);break;case '/':st.push(l / r);break;}
}int evaluate(string& s) {  // 也可以改造为中缀表达式转换后缀表达式stack<int> st;stack<char> op;for (int i = 0; i < (int)s.size(); i++) {if (delim(s[i])) continue;if (s[i] == '(') {op.push('(');  } else if (s[i] == ')') { while (op.top() != '(') {process_op(st, op.top());op.pop();  }op.pop();                } else if (is_op(s[i])) {  char cur_op = s[i];while (!op.empty() && priority(op.top()) >= priority(cur_op)) {process_op(st, op.top());op.pop(); }op.push(cur_op);  } else {            int number = 0;while (i < (int)s.size() && isalnum(s[i]))number = number * 10 + s[i++] - '0';--i;st.push(number);}}while (!op.empty()) {process_op(st, op.top());op.pop();}return st.top();
}

求后缀表达式

bool delim(char c) {return c == ' ';
}bool is_op(char c) {return c == '+' || c == '-' || c == '*' || c == '/';
}int priority(char op) {if (op == '+' || op == '-') return 1;if (op == '*' || op == '/') return 2;return -1; // 用于处理括号等非运算符
}string to_postfix(const string& infix) {string postfix_expr; stack<char> op_stack;   for (int i = 0; i < infix.size(); ++i) {// 跳过空格if (delim(infix[i])) {continue;}// 如果是数字,直接追加到结果字符串if (isdigit(infix[i])) {// 处理多位数while (i < infix.size() && isdigit(infix[i])) {postfix_expr += infix[i++];}--i; // 循环的i++会多加一次,这里回退postfix_expr += ' '; }else if (infix[i] == '(') {op_stack.push('(');}// else if (infix[i] == ')') {while (!op_stack.empty() && op_stack.top() != '(') {postfix_expr += op_stack.top();postfix_expr += ' ';op_stack.pop();}if (!op_stack.empty()) {op_stack.pop(); }}else if (is_op(infix[i])) {char current_op = infix[i];while (!op_stack.empty() && priority(op_stack.top()) >= priority(current_op)) {postfix_expr += op_stack.top();postfix_expr += ' ';op_stack.pop();}op_stack.push(current_op);}}while (!op_stack.empty()) {postfix_expr += op_stack.top();postfix_expr += ' ';op_stack.pop();}if (!postfix_expr.empty()) {postfix_expr.pop_back();}return postfix_expr;
}

http://www.dtcms.com/wzjs/255477.html

相关文章:

  • 吉首网站建设网络营销产品策略
  • 交互式网站有哪些功能最火的推广软件
  • 网站里添加聊天框怎么做seowhy培训
  • 网站建设横幅标语江苏短视频seo搜索
  • 电子商务网站建设含代码谷歌浏览器下载官网
  • 网站建设分几个阶段白度指数
  • 备案的网站如何访问百度网站收录查询
  • 响应式网站怎么写电商运营是做什么的
  • 广州黄埔做网站公司哪家好深度优化
  • 网站建设收费价目表百度销售岗位怎么样
  • 深圳 企业 网站建设广州谷歌seo公司
  • 一个网站怎么建设临沧seo
  • 兰州网站开发价格搜索引擎优化概述
  • 各种类型网站建设百度的营销方式有哪些
  • 网站手机版怎么制作网站注册时间查询
  • 做阿里巴巴网站要多少钱seo建站教学
  • 大学生个人简历电子版沈阳关键词优化费用
  • 南京的网站建设公司哪家好百度推广开户公司
  • 佛山三水今日疫情百度关键词优化工具
  • 网站设计 宽度中国女排联赛排名
  • 有什么做美食的视频网站重庆seo教程
  • 武汉比较大的做网站的公司百度指数介绍
  • 做网站 需要什么样的服务器seo优化公司
  • 微信二级分销模式seo工具大全
  • 健身餐的网站怎么做网络口碑营销案例分析
  • 网络营销推广的岗位职责有seo搜索引擎优化实战
  • 重庆的企业的网站建设广告推广语
  • 深圳餐饮网站设计山东今日头条新闻
  • 网络广告营销的特性深圳seo网站优化公司
  • 用自己的服务器做网站简述网络营销的概念