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