社区
数据结构与算法
帖子详情
随机生成逆波兰式···················
Kevin_qing
2001-06-01 01:38:00
讨论一下:
有什么比较简单的算法可以生成这个东西?
...全文
180
15
打赏
收藏
随机生成逆波兰式···················
讨论一下: 有什么比较简单的算法可以生成这个东西?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Kevin_qing
2001-06-04
打赏
举报
回复
靠~~~~~~~~
为什么没有给分的选项了?
Kevin_qing
2001-06-01
打赏
举报
回复
结帐
Kevin_qing
2001-06-01
打赏
举报
回复
分两遍计算好了,
先生成opt 和data的排列,再生成具体的操作符和操作数,最后生成机器代码
liuto
2001-06-01
打赏
举报
回复
呵呵,好,有意思
liuto
2001-06-01
打赏
举报
回复
你可以设最初两个必须是操作数。还要写两个函数,一个随即产生数,一个随即产生符
Kevin_qing
2001-06-01
打赏
举报
回复
nValideData=0;
while(1)
{
if(in is data )
{
nValideData++;
}
else
{
nValideData-=opt_req[in];//(该操作需要的操作数个数)
nValideData+=1;
}
assert(nValideData>0);
}
来试试扫描
ab+c+d!+
1:
in=a
nData=1;
2:
in=b
nData=2
3:
in=+
nData=1;
4:
in=d
nData=2
5:
in=!
nData=2
6
in=+
nData=1
得道一个数,正好是结果
liuto
2001-06-01
打赏
举报
回复
呵呵,废话,最后当然是操作符。sorry
liuto
2001-06-01
打赏
举报
回复
你还要保证最后是操作符
Kevin_qing
2001-06-01
打赏
举报
回复
新办法~~~~
考察错误的表达式:
a+
原因在data 只有1个 ,不够+ opt 2 的需求
所以可以这么做
从左往右扫描表达式。
nValideData=0;
while(1)
{
if(in is data )
{
nValideData++;
}
else
{
nValideData-=opt_req[in];//(该操作需要的操作数个数)
}
assert(nValideData>0);
}
然后生成的代码就好写了
Kevin_qing
2001-06-01
打赏
举报
回复
但是
ab+!怎么办!!!!!
liuto
2001-06-01
打赏
举报
回复
噢,我看错了,你得方法好象可以。
liuto
2001-06-01
打赏
举报
回复
abc++是对的呀。不能象你那样记数,似乎就得反演。
Kevin_qing
2001-06-01
打赏
举报
回复
我又想了一个:
考察:ab+c+
abc++
其中opt比data少1,并且在每个opt左边的data都>=opt+1
似乎这样就好生成了
一次应该就可以生成完整的
伪代码:
BYTE stack[1024];
int data_count=0;
int opt_count=0;
for(int i=0;i<stack_len;i++)
{
do{
stack[i]=rand();
if(stack[i] is data)
{
data_count++;
break;
}
else
{
if(data_count>opt_count+1)
{
opt_count++;
break;
}
}
}while(1);
}
差不多就可以了吧
liuto
2001-06-01
打赏
举报
回复
比如发现操作数不够就添操作数,操作符不够就添操作符
liuto
2001-06-01
打赏
举报
回复
讨论一下,先乱七八糟填一堆东西到栈里,然后反演,发现错误就改正,这样是不是可行?
c/c++ 四则运算实现
为了实现这个功能,我们可以使用逆波兰表示法(Reverse Polish Notation,RPN),也称为后缀表示法。这种表示法将运算符放在其操作数之后,消除了对括号的需求,使得运算顺序清晰明了。 具体步骤如下: 1. **...
中缀表达式转后辍 编译原理
其中,中缀表达式和后缀表达式(也称为逆波兰表示法)是编译器设计中处理数学表达式的重要概念。本主题主要探讨如何将中缀表达式转换为后缀表达式,并将这一过程用C#语言实现。 中缀表达式是我们常见的数学表达式...
栈应用之小学生作业系统.zip
2. **正确四则运算式子生成**:系统能够
随机生成
四则运算题目,这需要利用栈来检查生成的表达式的合法性。例如,每次生成一个操作数或运算符时,可以将其压入栈中,当遇到左括号时也压入栈,遇到右括号时检查栈顶...
24点课设报告(删减隐私版)1
3. **数码管显示**:单片机通过数码管显示
随机生成
的牌点,这涉及到数码管的驱动电路设计和编码技术,数码管的每个位通常通过七段驱动,需掌握段码控制。 4. **键盘输入处理**:设计了4个数学运算键和4个数字键,...
AWK程序设计语言
小型语言章节探讨了AWK的其他用途,如汇编程序与解释程序、画图语言、sort生成器、
逆波兰式
计算器、中缀计算器和递归下降语法分析。 算法实验章节提供了关于排序(插入排序、快速排序、堆排序)、剖析、拓扑排序、...
数据结构与算法
33,027
社区成员
35,335
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章