社区
数据结构与算法
帖子详情
随机生成逆波兰式···················
Kevin_qing
2001-06-01 01:38:00
讨论一下:
有什么比较简单的算法可以生成这个东西?
...全文
189
15
打赏
收藏
随机生成逆波兰式···················
讨论一下: 有什么比较简单的算法可以生成这个东西?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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++ 四则运算实现
用C语言实现四则运算,包括加减乘除以及括号,输入一个正确的算术表达式可正确输出结果,具体的实现思路是将算术表达式按序输入一个栈中,然后根据括号的位置以及左右半括号属性来判断运算顺序
中缀表达式转后辍 编译原理
编译原理 中辍表达式 转后辍表达式 C#语言实现
栈应用之小学生作业系统.zip
数据结构两周实习的项目,建立试题库文件,随机产生n个题目;题目涉及加减乘除,带括弧的混合运算;随时可以退出;保留历史分数,能回顾历史,给出与历史分数比较后的评价。
24点课设报告(删减隐私版)1
1. 测试多组数据 2. 单片机在数码管上随机给出 4 张牌点,牌点范围为 1-13,10 到 13 由字符 a,b,c,d 表示 3. 在单片机实验板按键中设
AWK程序设计语言
awk脚本的必备学习书籍,解决各种awk脚本编写中遇到的问题
数据结构与算法
33,028
社区成员
35,336
社区内容
发帖
与我相关
我的任务
数据结构与算法
数据结构与算法相关内容讨论专区
复制链接
扫一扫
分享
社区描述
数据结构与算法相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章