形如:(a1|a2)*(b1|b2)展开算法

j2eesir 2010-04-14 04:22:48
写程序展开它
(a1|a2)*(b1|b2)->a1*b1|a1*b2|a2*b1|a2*b2

*的优先级别高于|

a1*(b1|b2)|(x|y|z)*(a|b|c)|p
展开为:a1*b1|a1*b2|x*a|x*b|x*c|y*a|y*b|y*c|z*a|z*b|z*c|p

这个算法如何展开,还望帮忙
...全文
81 1 打赏 收藏 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
gysgogo 2010-04-14
  • 打赏
  • 举报
回复
我自己想的 但不知行不行

首先把它分成几部分,如a1*(b1|b2)|(x|y|z)*(a|b|c)|p
分成a1*(b1|b2) (x|y|z)*(a|b|c) p 三部分
这些部分符合(x|y|........)*(x|y|........)之后就可以定义函数
c(链表 a,链表 b) 其中a=x,y......; b=x,y.......
利用c(链表 a,链表 b)这个函数函数 可把上面例子分成
a1 b1;a1 b2;x a;x b;x c;y a;y b;y c;z a;z b;z;c p;
加上符号就可以了

这是大体思路

把a1*(b1|b2)|(x|y|z)*(a|b|c)|p分解成3部分的思路是:
遇到*号不分解加入链表
遇到'('则全部加入直到')'
遇到|则新建链表

c(链表 a,链表 b)这个函很容易实现;

自己想的,不怎么好,我想会有更加好的算法

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧