数学中的组合算法(sql)
2009-07-27 17:32
204 查看
概念:
排列: P(n,r) 从n个中选r个进行排列(与顺序有关)
组合: C(n,r) 从n个中选r个进行组合(与顺序无关)
create procedure sp_test(@n int,@r int)
as
begin
if isnull(@n,0)<isnull(@r,0)
return
set rowcount @n
select identity(int,1,1) as num into # from sysobjects a,syscolumns b
set rowcount 0
declare @sql varchar(8000),@ord varchar(8000),@i int
set @sql='select * from # [1]'
set @ord='[1].num'
set @i=1
while @i<@r
begin
set @i=@i+1
set @sql=@sql+' inner join # ['+rtrim(@i)+'] on ['+rtrim(@i)+'].num>['+rtrim(@i-1)+'].num'
set @ord=@ord+',['+rtrim(@i)+'].num'
end
set @sql=@sql+' order by '+@ord
print @sql
exec(@sql)
end
go
exec sp_test 5,1
exec sp_test 5,2
exec sp_test 5,3
go
drop procedure sp_test
go
排列: P(n,r) 从n个中选r个进行排列(与顺序有关)
组合: C(n,r) 从n个中选r个进行组合(与顺序无关)
create procedure sp_test(@n int,@r int)
as
begin
if isnull(@n,0)<isnull(@r,0)
return
set rowcount @n
select identity(int,1,1) as num into # from sysobjects a,syscolumns b
set rowcount 0
declare @sql varchar(8000),@ord varchar(8000),@i int
set @sql='select * from # [1]'
set @ord='[1].num'
set @i=1
while @i<@r
begin
set @i=@i+1
set @sql=@sql+' inner join # ['+rtrim(@i)+'] on ['+rtrim(@i)+'].num>['+rtrim(@i-1)+'].num'
set @ord=@ord+',['+rtrim(@i)+'].num'
end
set @sql=@sql+' order by '+@ord
print @sql
exec(@sql)
end
go
exec sp_test 5,1
exec sp_test 5,2
exec sp_test 5,3
go
drop procedure sp_test
go
相关文章推荐
- 对sql查询语句组合查询的通用实现算法(c++版,java版)
- 生成{1,2,...,n}的排列的算法-组合数学
- 【算法】组合数学——排列数生成算法详解(一)
- C/C++面试之算法系列--如何利用数学思想解1/2/5组合问题
- 【算法总结】组合数学相关
- 数学和算法之---排列组合
- 【算法】组合数学——排列数生成算法详解(一)
- 组合数学——排列数生成算法详解(zz)
- 关于数学中排列组合之组合算法实现
- Java编程算法基础----组合数学实践
- 【算法】组合数学——排列数生成算法详解(一)
- 51nod 算法马拉松30 A.函数【容斥】【组合数学】
- 清华组合数学第一章经典复习题,用六种算法计算839647521后999种排列
- 【算法】组合数学——排列数生成算法详解(一)
- C/C++面试之算法系列--如何利用数学思想解1/2/5组合问题
- 算法--组合数学:杨辉三角数学分析以及Java实现
- 【算法复习四】计算复杂性与算法分析---组合数学知识汇总
- 算法_3 : 组合数学:排列组合
- 【算法学习笔记】47.高精度x低精度 组合数学 杨辉三角 SJTU OJ 3003 Strange Mushroom
- 水一个:组合数学生成作业的程序,算法很垃圾,有兴趣的帮我改一下啊