1 条题解
-
0
自动搬运
来自洛谷,原作者为

cyb6666
**搬运于
2025-08-24 22:52:28,当前版本为作者最后更新于2023-11-22 23:27:03,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
分析
这道题其实只是一道前缀转后缀的题,难度并不高。
前缀表达式和后缀表达式的区别在于符号的位置。
打个生动的比喻,假设数字和符号都是人。
在前缀表达式时,参与运算的数字就是参与运算的符号的小跟班,参与运算的符号永远在参与运算的数字的前面。
在后缀表达式时,情况就不一样了,这下参与运算的符号成了参与运算的数字的小跟班。
此时我们就能想到一种递归的解法:
每次递归,我们先输入当前的操作值。
如果是数字,直接输出。 否则,我们先调用递归函数两次(找两个老大),再输出本身。代码
#include <bits/stdc++.h> using namespace std; void dfs() { string s; //一定要用局部变量 cin >> s; if (s[0] == '0') exit(0); //直接结束程序 if (s[0] >= '0' && s[0] <= '9') cout << s << " "; else { dfs(); //找第一个老大 dfs(); //找第二个老大 printf("%c ", s[0]); //输出自己 } } int main() { while (1) { dfs(); puts(""); } return 0; }完结撒花,留下一个赞吧~
- 1
信息
- ID
- 8749
- 时间
- 1000ms
- 内存
- 128MiB
- 难度
- 2
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者