这可能是语言不可知的/有用的答案可能只是伪代码。
我有一个程序,我想在一系列的输入下进行测试。这个程序接受一组文件,其中一个被指定为根目录。我想运行包含所有可能的文件子集的程序。(包含相同文件但具有不同根的两个子集被认为是不同的。)
下面是一个相同的示例。假设我有文件A、B和C。我想用以下命令进行测试:
{A}, root = A
{B}, root = B
{C}, root = C
{A B}, root = A
{A B}, root = B
{B C}, root = B
{B C}, root = C
{A C}, root = A
{A C}, root = C
{A B C}, root = A
{A B C}, root = B
{A B C}, root = C诸若此类。我相信这应该是动力装置。
给定一个满是文件的目录,在Java中生成此集合的最佳方式是什么?
发布于 2009-11-04 11:05:53
你说的是Java,但请看一下这个:Permutations, Combinations, and Variations using C# Generics。
发布于 2009-11-04 11:31:38
下面是递归方法的伪代码,用于对所有可能的混合进行测试。最大子集-优先:
allofthem = set(listallfiles(thedir))
function trythemall(someset):
if someset is empty: return
for entry in someset:
dotest(someset, root=entry)
for entry in someset:
trythemall(someset - set([entry]))
trythemall(allofthem)当然,如果您首先想要最小的子集,那么重组并不困难。
发布于 2009-11-04 11:02:07
这就是你想要的(psuedocode)吗?
set = new List()
foreach (file in dir) {
set.add(file)
foreach (entry in set) {
do-test(set, entry)
}
}这将构建一个集合,然后将该集合和集合中的每个项目传递给一个do-test方法。
https://stackoverflow.com/questions/1671467
复制相似问题