C#以排列组合中的“组合”方式遍历某个文件夹下的所有文件

原创 2015年07月08日 10:22:42

参考自:http://blog.csdn.net/zmazon/article/details/8315418#comments

 private void button1_Click(object sender, EventArgs e)
        {
            //temp文件夹下存放着我们的环境因子
            DirectoryInfo folder = new DirectoryInfo(@"E:\work\test\data\temp");
            string fileName;
            FileInfo[] file = folder.GetFiles("*.asc");//只读取asc文件
            string[] AttributeFiles = new string[file.Length];
            for (int i = 0; i < file.Length; i++)
            {
                fileName = folder + "\\" + file[i].ToString();
                AttributeFiles[i] = fileName;  
            }

            int r = 3;//组合数,即C(r,n)中的r
            if (null == AttributeFiles || AttributeFiles.Length == 0 || r <= 0 || r > AttributeFiles.Length)
            {
                MessageBox.Show("请检查文件夹的文件是否为空,参数n的设置是否有误。");
            }
            string[] AttributeFilesResult = new string[r];
            getCombination(AttributeFiles, r, 0, AttributeFilesResult, 0);
        }

        private void getCombination(string[] a, int r, int begin, string[] b, int index)
        {
            string AttributeFile = "";
            if (r == 0)
            {
                for (int i = 0; i < index; i++)
                {
                    AttributeFile = AttributeFile + b[i] + " ";

                }
                Console.WriteLine("AttributeFile=" + AttributeFile);

            }
            for (int i = begin; i < a.Length; i++)
            {
                for (int j = 0; j < r; j++)
                {
                    if (j % r != 0)

                    {  
                        b[index] = a[i] + "#";//遍历文件,生成路径+文件名,在每个路径文件名后面加“#”号,末尾元素不加
                    }
                    else
                    {
                        b[index] = a[i];
                    }
                }

                getCombination(a, r-1,i+1,b,index+1);
            }

        }

程序部分输出结果如下(C(3,4),从文件夹中的4个文件中选出r=3的组合):

AttributeFile=E:\work\test\data\temp\horizc.asc# E:\work\test\data\temp\profc.asc# E:\work\test\data\temp\slope.asc 
AttributeFile=E:\work\test\data\temp\horizc.asc# E:\work\test\data\temp\profc.asc# E:\work\test\data\temp\twi.asc 
AttributeFile=E:\work\test\data\temp\horizc.asc# E:\work\test\data\temp\slope.asc# E:\work\test\data\temp\twi.asc 
AttributeFile=E:\work\test\data\temp\profc.asc# E:\work\test\data\temp\slope.asc# E:\work\test\data\temp\twi.asc 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#排列组合类

  • 2012年12月12日 11:06
  • 9KB
  • 下载

使用组合模式与迭代器模式遍历文件夹中所有文件

我写这个例子只是想练习组合模式和迭代器模式的使用,模仿了headfirst设计模式的写法,解决了里面的bug,自己mark一下,对于java初学者不是好理解,so~多看几遍总归有些收获,高手就轻拍吧....

C# 排列组合取值 控制台程序

using System; using System.Collections.Generic; using System.Linq; using System.Text;         ...

UVa Problem 10132 File Fragmentation (文件还原) 排列组合+暴力

题目说每个相同文件(01串)都被撕裂成两部分,要求拼凑成原来的样子,如果有多种可能输出一种。 我标题写着排列组合,其实不是什么高深的数学题,只要把最长的那几个和最短的那几个凑一起,然后去用其他几个验...
  • hcbbt
  • hcbbt
  • 2013年07月14日 00:48
  • 1740

BAT批处理文件中变量的排列组合

BAT批处理文件中变量的排列组合 示例1 set hanye=寒夜孤星,那么变量中这四个字,任意两个字排列,也可以自己和自己排列,有多少种排列呢? bat脚本: @echo off set...

matlab_排列组合

  • 2016年03月17日 21:56
  • 18KB
  • 下载

掌握基本类型,快解排列组合

  • 2015年04月26日 10:42
  • 73KB
  • 下载

C# 计算排列组合数,及列出所有组合形式的算法

前段时间有同学问到,如何编程求排列组合数,以及列出所有排列组合形式的算法。乘着放假,写了一种实现的方法!怕时间长了,淹没在硬盘里,记录在此! /// /// 计算Int...

排列组合迭代

  • 2014年10月11日 10:46
  • 652KB
  • 下载

七个字母排列组合的小程序

  • 2011年11月06日 21:28
  • 996B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#以排列组合中的“组合”方式遍历某个文件夹下的所有文件
举报原因:
原因补充:

(最多只允许输入30个字)