【推荐】妙趣找句子
知道我们论坛高人很多,遂发这里先求助下算法。。。
如果能给个C或者perl代码那更好。。。
- Perl code
================ 问题描述 =================集合_01={币,持,愁,丁,封,搁,阁,洁,老,码,企,省,谁,送,锁,态,威}集合_02={昂,蜂,挂,搂,茂,漂,适,市,堂,异,脂}集合_03={布,吃,调,范,考,七,弃,球,刃,逃,娃}集合_04={锄,处,各,弄,茄,射,萄}集合_05={包,锅,搅,舅,谅,茅,清,帅,椅,阅,者}集合_06={爆,匆,脆,堆,帆,分,将,昆,理,逆,漆,圆}集合_07={备,标,崇,唇,娇,切,万,震,指}集合_08={合,圈,师,谈,锈,愈,月,丈}集合_09={唉,按,吉,嘉,脉,霉,眉,三,选,有,愉}集合_10={弊,吊,脊,刊,上,谊,尊}集合_11={程,栋,锋,看,谋,朋,笋,下,洋}集合_12={昌,而,萌,砌,舌,同,希}集合_13={倍,不,服,复,砍,名,萍,稍,舍,耍,伍,植}集合_14={缎,后,谎,茎,挎,猎,明,税,与,怎}集合_15={搏,伏,昏,栏,漏,式,氏,踏,透,戏,夏,小,意,脏}集合_16={餐,成,伐,渐,耐,锐,唐,吐,帐,逐}集合_17={丑,蔑,民,脑,少,树,挑,我,向,笑,刑,休}集合_18={倒,递,划,椒,戒,怒,洒,舒}集合_19={弓,鼓,缓,吓,易,专,蜓}集合_20={笔,阔,气,且,途,研,演,渔}集合_21={耕,怕,夕,引}集合_22={编,脖,怖,化,或,尖,世,帖,挖,外,崖,砖}集合_23={北,逗,耗,朗,栗,列,吗,渗,洗,众}集合_24={尘,甘,帘,刘,娘,丘,倘,优,缘,战,蜘}集合_25={鄙,丙,匙,错,候,伙,则}集合_26={多,刚,会,脚,戚,尚,甚,通,业,倚,愚}集合_27={创,丛,笛,君,猛,望}集合_28={猜,东,怜,谜,蜜,霜,搜,甜,夜,帜}集合_29={贝,尝,朝,初,帝,缝,萝,逝,思,丝}集合_30={洞,搞,伞,吞,舞,霞,贞}集合_31={弟,队,负,感,够,借,鸟,期,生,速,土,伟,星,真,舟}在这31个集合(集合元素不相交,共包含了304个常用汉字)中,顺序或者逆序地各选“一个字”, 组成一句或者几句基本可以被人理解的话,或几句话(这句话含有且仅含有31个汉字,和若干个“逗号,分号或者等号”)怎么找?
我这里有个包含了4万个常用词汇的中文词库(dict.txt,每个词汇都在这304个汉字范围内),如何在可被接受的时间内把这样的话给匹配出来?
提前谢谢各位了,谢谢。。
=================================================
当然,大家也可以抱着娱乐的态度,先找找看,看你最大程度能找到怎样被人理解的话,或者句子,找一半也可以。[b][/b]
[解决办法]
- C/C++ code
//================ 问题描述 =================//集合_01={币,持,愁,丁,封,搁,阁,洁,老,码,企,省,谁,送,锁,态,威}//集合_02={昂,蜂,挂,搂,茂,漂,适,市,堂,异,脂}//集合_03={布,吃,调,范,考,七,弃,球,刃,逃,娃}//集合_04={锄,处,各,弄,茄,射,萄}//集合_05={包,锅,搅,舅,谅,茅,清,帅,椅,阅,者}//集合_06={爆,匆,脆,堆,帆,分,将,昆,理,逆,漆,圆}//集合_07={备,标,崇,唇,娇,切,万,震,指}//集合_08={合,圈,师,谈,锈,愈,月,丈}//集合_09={唉,按,吉,嘉,脉,霉,眉,三,选,有,愉}//集合_10={弊,吊,脊,刊,上,谊,尊}//集合_11={程,栋,锋,看,谋,朋,笋,下,洋}//集合_12={昌,而,萌,砌,舌,同,希}//集合_13={倍,不,服,复,砍,名,萍,稍,舍,耍,伍,植}//集合_14={缎,后,谎,茎,挎,猎,明,税,与,怎}//集合_15={搏,伏,昏,栏,漏,式,氏,踏,透,戏,夏,小,意,脏}//集合_16={餐,成,伐,渐,耐,锐,唐,吐,帐,逐}//集合_17={丑,蔑,民,脑,少,树,挑,我,向,笑,刑,休}//集合_18={倒,递,划,椒,戒,怒,洒,舒}//集合_19={弓,鼓,缓,吓,易,专,蜓}//集合_20={笔,阔,气,且,途,研,演,渔}//集合_21={耕,怕,夕,引}//集合_22={编,脖,怖,化,或,尖,世,帖,挖,外,崖,砖}//集合_23={北,逗,耗,朗,栗,列,吗,渗,洗,众}//集合_24={尘,甘,帘,刘,娘,丘,倘,优,缘,战,蜘}//集合_25={鄙,丙,匙,错,候,伙,则}//集合_26={多,刚,会,脚,戚,尚,甚,通,业,倚,愚}//集合_27={创,丛,笛,君,猛,望}//集合_28={猜,东,怜,谜,蜜,霜,搜,甜,夜,帜}//集合_29={贝,尝,朝,初,帝,缝,萝,逝,思,丝}//集合_30={洞,搞,伞,吞,舞,霞,贞}//集合_31={弟,队,负,感,够,借,鸟,期,生,速,土,伟,星,真,舟}////在这31个集合(集合元素不相交,共包含了304个常用汉字)中,//顺序或者逆序地各选“一个字”,//组成一句或者几句基本可以被人理解的话,或几句话//(这句话含有且仅含有31个汉字,和若干个“逗号,分号或者等号”)#include <conio.h>#include <stdio.h>#include <stdlib.h>#include <time.h>char HZ[31][35]={"币持愁丁封搁阁洁老码企省谁送锁态威","昂蜂挂搂茂漂适市堂异脂","布吃调范考七弃球刃逃娃","锄处各弄茄射萄","包锅搅舅谅茅清帅椅阅者","爆匆脆堆帆分将昆理逆漆圆","备标崇唇娇切万震指","合圈师谈锈愈月丈","唉按吉嘉脉霉眉三选有愉","弊吊脊刊上谊尊","程栋锋看谋朋笋下洋","昌而萌砌舌同希","倍不服复砍名萍稍舍耍伍植","缎后谎茎挎猎明税与怎","搏伏昏栏漏式氏踏透戏夏小意脏","餐成伐渐耐锐唐吐帐逐","丑蔑民脑少树挑我向笑刑休","倒递划椒戒怒洒舒","弓鼓缓吓易专蜓","笔阔气且途研演渔","耕怕夕引","编脖怖化或尖世帖挖外崖砖","北逗耗朗栗列吗渗洗众","尘甘帘刘娘丘倘优缘战蜘","鄙丙匙错候伙则","多刚会脚戚尚甚通业倚愚","创丛笛君猛望","猜东怜谜蜜霜搜甜夜帜","贝尝朝初帝缝萝逝思丝","洞搞伞吞舞霞贞","弟队负感够借鸟期生速土伟星真舟",};int L[31]={17,11,11, 7,11,12, 9, 8,11, 7, 9, 7,12,10,14,10,12, 8, 7, 8, 4,12,10,11, 7,11, 6,10,10, 7,15,};int c,i,k,r,n;char gap[3]={',',';','='};char buf[100];void main() { srand( (unsigned)time( NULL ) ); while (1) { switch (rand()%2) {//按1/2概率 case 0://顺序 k=0; for (i=0;i<31;i++) { r=(rand()%L[i])*2; buf[k++]=HZ[i][r]; buf[k++]=HZ[i][r+1]; n=rand()%4;//按1/4概率加,;=或不加,如果觉得,;=太多,可将4改大 switch (n) { case 0: case 1: case 2: buf[k++]=gap[n]; break; } } buf[k++]=0; break; case 1://逆序 k=0; for (i=30;i>=0;i--) { r=(rand()%L[i])*2; buf[k++]=HZ[i][r]; buf[k++]=HZ[i][r+1]; n=rand()%4; switch (n) { case 0: case 1: case 2: buf[k++]=gap[n]; break; } } buf[k++]=0; break; } printf("%s\n",buf);//判断是否基本可以被人理解是人的事不是我电脑的事(^_^) c=getch(); if (27==c) break;//按Esc键退出 }}//持;适;逃弄清堆指锈吉弊=朋=而=耍,猎,式,成=丑=倒,吓,笔=怕,挖;众=娘,鄙,多;笛;霜,朝=吞真=//鸟搞;思=怜君戚,候,帘=朗=帖;引;途,易,怒;脑;逐,氏=税,萍,砌;笋=谊;唉;师=娇爆锅=处娃市=威=//送=漂=弃;处,包;昆=崇=愈,选=上,笋=萌;砍怎,踏,唐我,递易=笔;夕外;朗=战丙;刚;创,谜;朝,贞生=//送=昂;考射茅,理;唇;谈吉脊=栋=而稍挎,意;唐,蔑=倒;弓;途=耕;或;渗;刘;丙=刚;笛,甜;丝;伞;感=//封=市=布,锄;者=将,备锈=嘉弊;谋=萌,舍=后=昏;餐;丑倒缓;气;怕,挖,列=丘;丙=脚望谜,缝;洞,队,//持挂弃各=谅=爆=娇合唉吊,下,舌;伍=缎氏=锐=刑;划=蜓,渔耕=化北;娘=则=业猛帜=尝=舞,感//伟=搞朝,甜猛会=错;甘;朗,或=夕=气;专洒我;伐昏,税;伍=萌,朋;脊霉愈,娇,分;清=射调;脂封=//生;搞贝,怜猛=脚;丙;刘朗=怖夕途=吓,洒=刑伐,搏;谎=倍=舌;栋=上嘉;愈震,堆,包;锄刃;搂搁,//丁=市范;锄帅=逆=标=锈=霉,尊=谋=舌,复;猎意;成;脑=舒吓阔引;尖=朗帘=丙甚;望=东=朝吞感;//洁;漂=刃,茄=包,分标;锈;三,谊;程;昌服;茎;漏渐;休,洒,弓,渔,怕化=列,刘,伙;甚猛搜,贝贞;伟;//鸟;霞=尝=霜,笛=业候;娘栗,世,耕;笔易倒=刑,餐,踏怎=名,舌=朋;吊=嘉,谈;崇=脆舅=锄范昂,送=//封,堂,刃各=阅;将;指;锈愉=弊=看=希,砍,税;脏=吐;向,递,弓;研,夕=编=列,帘则;刚,创猜思,伞,真;//土贞;帝=蜜;望,尚匙;倘=栗;怖引;且;弓;洒=脑,耐;夏;挎;倍昌;看刊,选,谈=备将,茅,茄;布;昂;搁=