探索成语接龙

网上有个成语接龙,是以胸有成竹开头的,接了1712个,觉得很强。自己没事弄了个sql的程序,调整词频算法后能在3分钟内计算出
7487个,远远超过了网上的版本
**************************start******************************
initial...
total 38129 words //使用网上流传的成语库
finish initial, cost time 466ms
computing...
胸有成竹   第1个
竹马之交   第2个
交臂相失   第3个
失张失智   第4个
智藏瘝在   第5个
在在皆是   第6个
是古非今   第7个
今生今世   第8个
世外桃源   第9个
源清流洁   第10个
。。。。。。。
 
惊见骇闻   第7480个
闻过则喜   第7481个
喜笑颜开   第7482个
开卷有得   第7483个
得寸思尺   第7484个
尺板斗食   第7485个
食不二味   第7486个
味如嚼蜡   第7487个
 
 
set nocount on
declare @first varchar(20)
declare @rear varchar(2)
declare @t datetime
declare @head varchar(2)
declare @name varchar(20)
declare @id int
declare @count int
declare @len int
declare @part int
set @first='胸有成竹'
set @len=10000
set @part=313--@len/4
if not exists (select rear from cy_index where name=@first)
 print '不是成语!'
else
begin 
 print '**************************start******************************'
 print 'initial...'
 set @t=getdate()
 IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[dbo].[cy_copy]') AND OBJECTPROPERTY(id, N'IsUserTable') = 1) DROP TABLE [dbo].[cy_copy]
 select * into [cy_copy] from cy_index where len(name)=4
 select @count=count(1) from cy_copy
 print 'total '+cast(@count as varchar(20))+' words'
 print 'finish initial, cost time '+cast(datediff(ms,@t,getdate()) as varchar(10))+'ms'
 print 'computing...'
 set @t=getdate()
 select @rear=rear from cy_copy where name=@first
 print @first+'   第1个'
 delete from cy_copy where name=@first

 set @count=1
 while (exists(select id from cy_copy where head=@rear) and @count<@len)
 begin
  if @count<@part select top 1 @id=id,@name=name,@rear=rear from cy_copy where head=@rear and sons>10 order by sons
  else select top 1 @id=id,@name=name,@rear=rear from cy_copy where head=@rear order by sons desc
  update cy_copy set sons=sons-1 where rear=left(@name,1)
  delete from cy_copy where id=@id
  set @count=@count+1
  print @name+'   第'+cast(@count as varchar(10))+'个'
 end
 print 'finish ! cost time '+cast(datediff(ms,@t,getdate()) as varchar(10))+'ms'
end
set nocount off
经过我对词频的分析,最后得出一个13000左右的成语串,目前无法得到最长值,感觉蛮有趣,1/3的成语是有关系的,而且你背一个就能掌握1万多个
想探索一下完美解决方案
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值