原创算法,组句法则

一个句子由多种语法成分组成,每个成分都有几个可选的词,如果给定所有的成分和每个成分可选的词,输出所有可能组成的句子。举例说明,这个句子有三种成分,第一种成分取值范围是你,我,他,第二种成分的取值是不或者空,第三种成分是喜欢,第四种成分的取值是唱歌和跳舞,运行 结果如下。

请输入分词法则,结束请输入"结束"

我,你,他;,不;喜欢;唱歌,跳舞

第1个句子是:我喜欢唱歌

第2个句子是:我喜欢跳舞

第3个句子是:我不喜欢唱歌

第4个句子是:我不喜欢跳舞

第5个句子是:你喜欢唱歌

第6个句子是:你喜欢跳舞

第7个句子是:你不喜欢唱歌

第8个句子是:你不喜欢跳舞

第9个句子是:他喜欢唱歌

第10个句子是:他喜欢跳舞

第11个句子是:他不喜欢唱歌

第12个句子是:他不喜欢跳舞

请输入分词法则,结束请输入"结束"

算法的输入是组句法则,返回值是所有可能的句子。

用java实现,代码如下:

 public static String[] getWord(String source)

   {

  String[] sourceArray=source.split(";");

  String[] before={""},after=null,orStr;

  for(int i=0;i<sourceArray.length;i++)

  {

  orStr=sourceArray[i].split(",");

  int OL=orStr.length;

  after=new String[OL*before.length];

  for(int j=0;j<OL*before.length;j++)

  after[j]=before[j/OL]+orStr[j%OL];

  before=after;

  }

  return after;

   }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值