日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql杨辉三角_实现杨辉三角

發布時間:2024/9/18 数据库 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql杨辉三角_实现杨辉三角 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

用存儲過程和臨時表來寫,主要是想最后一個select出來結果,而且排成想要的三角形形狀。 由于BIGINT數據的限制,最多可以顯示67層。 結果 id ----------- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- 1 1 2 1 1 3 1 2 1 4

用存儲過程和臨時表來寫,主要是想最后一個select出來結果,而且排成想要的三角形形狀。

由于BIGINT數據的限制,最多可以顯示67層。

結果

id

----------- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----

1 1

2 1 1

3 1 2 1

4 1 3 3 1

5 1 4 6 4 1

6 1 5 10 10 5 1

7 1 6 15 20 15 6 1

8 1 7 21 35 35 21 7 1

CREATE proc #pr_YangHui

@c int

as

/* SQL實現顯示楊輝三角 */

/* 版本: 1.0 */

/* 作者: Haiwer */

/* 版權所有 */

/* 2006.05.10 */

set nocount on

if @c<2 return --兩層以下就不排了

declare @i int

declare @j int

declare @sql varchar(8000)

declare @sql1 varchar(8000)

declare @sql2 varchar(8000)

create table #(id int IDENTITY(1,1),a50000 bigint)

insert #(a50000) values (1) --第一層

set @i=2

while @i<=@c

begin

--為了實現動態層,只好動態修改臨時表結構

set @sql='alter table # add a'+cast(50000+@i-1 as varchar(10))+' bigint,a'+cast(50000-@i+1 as varchar(10))+' bigint'

exec (@sql)

set @sql1=''

set @sql2=''

set @j=@i-1

while @j>=0

begin

--這里判斷有點亂

if @j=0

set @sql1=@sql1+',a'+cast(50000-@j as varchar(10))

else

set @sql1=@sql1+',a'+cast(50000-@j as varchar(10))+',a'+cast(50000+@j as varchar(10))

if @j=@i-1

set @sql2=@sql2+',1,1'

else

if @j=0

set @sql2=@sql2+',a'+cast(50000-@j-1 as varchar(10))+'+a'+cast(50000-@j+1 as varchar(10))

else

set @sql2=@sql2+',a'+cast(50000-@j-1 as varchar(10))+'+a'+cast(50000-@j+1 as varchar(10))+',a'+cast(50000+@j-1 as varchar(10))+'+a'+cast(50000+@j+1 as varchar(10))

set @j=@j-2

end

--去掉多余的逗號

set @sql1=right(@sql1,len(@sql1)-1)

set @sql2=right(@sql2,len(@sql2)-1)

set @sql=cast(@i-1 as varchar(10))

exec('insert #('+@sql1+') select '+@sql2+' from # where id='+@sql)

set @i=@i+1

end

set @i=50000-@c+1

set @j=50000+@c-1

set @sql=''

--去最長的數據,就是為了節省顯示空間

select @sql1=CAST(len(cast(max(a50000) as varchar(50)))+1 AS VARCHAR(10)) from #

while @i<=@j

begin

set @sql=@sql+',isnull(cast(a'+cast(@i as varchar(10))+' as varchar('+@sql1+')),'''')'

set @i=@i+1

end

exec ('select id'+@sql+' from # order by id')

drop table #

GO

--調用

exec #pr_YangHui 8

本文原創發布php中文網,轉載請注明出處,感謝您的尊重!

總結

以上是生活随笔為你收集整理的mysql杨辉三角_实现杨辉三角的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。