Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 组合数学:尝试计算算法(关于子集)_Algorithm_Combinatorics_Subset - Fatal编程技术网

Algorithm 组合数学:尝试计算算法(关于子集)

Algorithm 组合数学:尝试计算算法(关于子集),algorithm,combinatorics,subset,Algorithm,Combinatorics,Subset,我正试图解决TopCoder上的一个问题。基本上,我需要的是以下算法: 设S=[1,2,…,n]是一个序列。设m小于n 1) 找到大小为m的S的所有子序列(很容易-n^m) 2) 查找大小为m的S的所有子序列,其中元素的顺序为非减量顺序 3) 查找不允许重复元素的大小为m的S的所有子序列(这也很容易-(n!)/((n-m)!) 4) 查找大小为m的S的所有子序列,其中元素的顺序为非减量顺序且不允许重复 仍在努力寻找第2部分和第4部分的公式。如果您能帮我一点忙,我们将不胜感激 提前谢谢 编辑: 原

我正试图解决TopCoder上的一个问题。基本上,我需要的是以下算法:

设S=[1,2,…,n]是一个序列。设m小于n

1) 找到大小为m的S的所有子序列(很容易-n^m)

2) 查找大小为m的S的所有子序列,其中元素的顺序为非减量顺序

3) 查找不允许重复元素的大小为m的S的所有子序列(这也很容易-(n!)/((n-m)!)

4) 查找大小为m的S的所有子序列,其中元素的顺序为非减量顺序且不允许重复

仍在努力寻找第2部分和第4部分的公式。如果您能帮我一点忙,我们将不胜感激

提前谢谢

编辑:

原始问题:


要解决4),请注意,不重复“非递减”表示“递增”。将从
S
构建的长度为
m
的所有序列集划分为等价类,等价类由子序列中出现的元素集定义。在每个等价类中,只有一个递增序列(元素按
排序)。我对术语“set”的用法感到困惑。集合往往是无序的,最多只包含一次单个元素,所以我不理解问题2、3和4的意思。嗯,我的错是“set”在这个问题中考虑的是以下性质:1)[1,2,3]和[2,1,3]是不同的“集”;2)[1,1,1]是一个“集”。“集合”的得名奖励:如果你得到2)你得到4)通过2)和3)哦的交叉点。在这种情况下,这些可能只是
序列
。您的示例表明
S
包含
1..n
中的所有整数,对于某些
n
。这是故意的还是意外的?