zoukankan      html  css  js  c++  java
  • sqlserver 穷举 排列 组合

    困扰我一天的一个算法问题,忽然灵光一闪,想到了,呵呵,个人感觉还算满意。

    直接上最终结果。

    问 : 从 n个数中取r个数 穷举显示所有排列 和 组合

     T-sql  解:

    IF EXISTS ( SELECT  *
                FROM    sys.objects
                WHERE   object_id = OBJECT_ID(N'[dbo].[number]')
                        AND type IN ( N'U' ) )
        DROP TABLE [dbo].[number]

    CREATE TABLE number
        (
          num INT NOT NULL
                  PRIMARY KEY
     --, NameValue varchar(100)     任意名字你懂的。
        )

    --搞5个数字进去
    DECLARE @i INT
    SET @i = 1
    WHILE @i <= 5
        BEGIN
            INSERT  INTO dbo.number
                    ( num )
            VALUES  ( @i )
            SET @i = @i + 1
        END


    --显示所有排列
    SELECT  *
    FROM    dbo.number AS t1
            CROSS JOIN dbo.number AS t2
    WHERE   t1.num <> t2.num
     
    --显示所有组合
    SELECT  *
    FROM    dbo.number AS t1
            CROSS JOIN dbo.number AS t2
    WHERE   t1.num < t2.num
     

    搞个篮球赛,足球赛的赛程表就瞬间出来了。

  • 相关阅读:
    统计:概述
    概率论总结
    概率论13 中心极限定律
    概率论12 矩与矩生成函数
    概率论11 协方差与相关系数
    概率论10 方差与标准差
    概率论09 期望
    概率论08 随机变量的函数
    mysql 分区
    Linux 搭建svn版本库
  • 原文地址:https://www.cnblogs.com/sycdirdir/p/2330164.html
Copyright © 2011-2022 走看看