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