探索成語接龍

2021-05-02 03:27:28 字數 2630 閱讀 2110

網上有個成語接龍,是以胸有成竹開頭的,接了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))+'個'

endprint 'finish ! cost time '+cast(datediff(ms,@t,getdate()) as varchar(10))+'ms'

endset nocount off

經過我對詞頻的分析,最後得出乙個13000左右的成語串,目前無法得到最長值,感覺蠻有趣,1/3的成語是有關係的,而且你背乙個就能掌握1萬多個

想探索一下完美解決方案

dfs 成語接龍

單詞接龍是乙個與我們經常玩的成語接龍相類似的遊戲,現在我們已知一組單詞,且給定乙個開頭的字母,要求出以這個字母開頭的最長的 龍 每個單詞都最多在 龍 中出現兩次 在兩個單詞相連時,其重合部分合為一部分,例如 beastbeast和astonishastonish,如果接成一條龍則變為beastoni...

成語接龍 dfs

成語接龍 time limit 1000 ms memory limit 32768 k total submit 92 17 users total accepted 23 14 users rating special judge no description 給出n個成語,通過成語接龍,求接出...

成語接龍python

用python編寫乙個成語接龍 讀取 成語大全.txt f open 成語大全.txt r encoding ansi 將檔案中每一行讀取到txt中 txt f.readlines 將成語與其釋義分開,儲存到idiom中 idiom for j in range len txt if txt j n...