-- 测试数据, value 列放要处理的数(此处随机生成100个数据)
DECLARE @t TABLE(
id int identity,
value int)
INSERT @t SELECT TOP 100 CHECKSUM(NEWID()) % 100 FROM syscolumns
--=====================================================
-- 组合处理
--=====================================================
DECLARE @r TABLE(
id int IDENTITY,
vs varchar(100))
DECLARE @tid TABLE(id int PRIMARY KEY)
IF OBJECT_ID('tempdb..#1') IS NOT NULL
DROP TABLE #1
SELECT
id1 = A.id, value1 = A.value,
id2 = B.id, value2 = B.value,
value = A.value + B.value,
flag = CASE WHEN A.value + B.value BETWEEN 98 AND 102 THEN 1 ELSE 0 END
INTO #1
FROM @t A, @t B
WHERE A.id B.id
DECLARE tb CURSOR STATIC LOCAL
FOR
SELECT id1, id2, id3, vs
FROM(
-- 二次组合的
SELECT flag = 2,
A.id1, A.id2, id3 = NULL,
vs = RTRIM(A.value1) + ',' + RTRIM(A.value2)
FROM #<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="True" sourcevalue="1" unitname="a">1 A</chmetcnv>
WHERE flag = 1
UNION ALL
-- 三次组合的
SELECT flag = 3,
A.id1, A.id2, id3 = B.id,
RTRIM(A.value1) + ',' + RTRIM(A.value2) + ',' + RTRIM(B.value)
FROM #<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="True" sourcevalue="1" unitname="a">1 A</chmetcnv>, @t B
WHERE A.id2 B.id
AND A.value + B.value BETWEEN 98 AND 102
)A
ORDER BY flag DESC
-- 仅选出复合需求的数据(过滤重复数据)
DECLARE @id1 int, @id2 int, @id3 int, @values varchar(100)
OPEN tb
FETCH tb INTO @id1, @id2, @id3, @values
WHILE @@ROWCOUNT > 0
BEGIN
IF NOT EXISTS(
SELECT * FROM @tid WHERE id IN(@id1, @id2, @id3))
BEGIN
INSERT @r VALUES(@values)
INSERT @tid SELECT *
FROM(
SELECT id = @id1 UNION ALL SELECT @id2 UNION ALL SELECT @id3
)A WHERE id > 0
END
FETCH tb INTO @id1, @id2, @id3, @values
END
CLOSE tb
DEALLOCATE tb
-- 显示结果
SELECT vs FROM @r
相关推荐
随机生成5个不大于100的整数存入一数组,计算该数组的平均值,输出该5个整数及平均值
给定程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列是处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。...
在计算机科学和数学中,计算从n个正整数中选择k个数的不同组合数是一项基本的任务,这涉及到组合数学中的组合(Combination)概念。组合是指从一个集合中不考虑顺序取出k个元素的方法数,它与排列(Permutation)...
C语言程序设计-找出一批正整数中的最大的偶数;
设a 和b 是2 个正整数,a≤b,找出a 和b之间约数个数最多的数x。 编程任务:对于给定的2 个正整数a≤b,编程计算a 和b 之间约数个数最多的数。 Input 输入数据的第1 行有2 个正整数a和b。 Output 程序运行结束时...
分析:求解k个数的不同组合,我们可以用一维数组a[0]~a[k-1]来保存其中的一个结果,因为组合元 素是不重复的,可以约定其递增排列,因为数组中的元素是递增排列的: 所以a[k-1]即组合中的最后一个数,只能为k~n 令i=...
标题中的“将一个正整数拆分成若干个正整数的和”是一个经典的算法问题,常见于计算机编程和算法设计中。这个问题的核心是找到所有可能的方式,将一个给定的正整数N拆分为一系列非负整数之和,且每个部分都是正整数...
C语言程序设计-找出一个大于给定整数且紧随这个整数的素数,并作为函数值返回;
初始值分别为65535(一个较大的整数)和0,这样可以确保任何输入的正整数都会小于或等于`min`,大于或等于`max`。 - `aver`:用于存储最终的平均值。 #### 3.2 输入处理循环 ```c scanf("%d", &a); while (a != 0) ...
### 证明:对任意正整数n,都存在连续n个正整数,它们都是合数 #### 引言 在数学中,特别是在数论领域,寻找特定模式或性质的序列是一项重要的研究课题。本篇文章将详细介绍如何证明“对任意正整数n,都存在连续n...
C语言程序 对一个大于或等于3的正整数,判断它是不是一个素数
具体来说,我们需要编写一个程序,其输入为两个正整数 \( a \) 和 \( b \),输出为在 \( a \) 和 \( b \) 之间约数个数最多的那个数的约数个数 \( div(x) \)。 ### 二、算法设计 #### 2.1 算法思路 解决这个问题...
总结来说,"c# 数据组合 从一组数据中 返回组合的和等于某个值 的所有组合"这个问题可以通过递归和回溯技术在C#中实现。这个过程涉及到组合数学、算法设计以及递归编程,是计算机科学中的基础概念,对于提升编程能力...
给定一个正整数a,以及另外的5个正整数,问题是:这5个整数中,小于a的整数的和是多少? 输入要求 输入一行,只包括6个小于100的正整数,其中第一个正整数就是a。 输出要求 输出一行,给出一个正整数,是5个数中...
求任意两个正整数之间的素数,C语言代码程序简洁,好懂比书上的简单。
给定一个整数n,求出所有连续的且和为n正整数。比如对于整数27,结果为2~7、8~10、13和14,因为这些数之间的整数的和都是27。注意:并不是所有的整数都有结果,例如不存在连续的整数和为16。为了提高计算的效率,...
素数又叫质数,质数是指在大于1的自然数中,除了1和它本身以外,不能被其他自然数整除的数。 问题: 输入一个整数n,输出1~n中的素数,里有详细解释,有问题也欢迎留言!谢谢支持啦~
在计算机编程中,经常需要处理数值运算问题,例如找出一组数据中的最大值以及计算这些数值的平均值。这些基本操作是理解和应用算法的重要步骤之一。本篇文章将详细介绍如何通过C语言编写一个简单的程序来实现这一...
从键盘先后输入两个不大于9999的正整数m和n,若m>n,则交换两数。然后求m~n(m和n均为正整数且m≤n)之间的所有完数。 【输入形式】 先后输入两个正整数m和n,用逗号分隔 【输出形式】 输出所有完数,每两个数...
在这个场景中,"C语言实现的长整数相加"是一个程序,它利用链表作为基础数据结构来存储和操作长整数,进而实现加法运算。接下来,我们将详细探讨这个主题。 首先,我们要理解C语言中的链表。链表是一种动态数据结构...