日期:2014-05-17  浏览次数:20758 次

最近组合算法,探讨的多,问个问题
题目来自http://topic.csdn.net/u/20090219/17/febac6e8-ab35-4dda-ad73-ad7314ed487e.html上面的一题
题目: 给定一个字符串,里面用空格分开为6个或者更多的子单元,如:01 02 03 04 05 06 07 08... 写一函数,返回任6个进行组合的所有字符串。(
对于8选6下面是我利用位操作的方法实现
using System;
namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "01 02 03 04 05 06 07 08";
            string[] set = str.Split(' ');
            int n = set.Length;
            int m = 6;
            int min = (0x01 << m) - 1;//00111111
            int max = min << (n - m);//11111100
            int j;
            int k;
            for (int i = min; i <= max; i++)
            {
                j = 0;
                k = i;
                while (k>0)
                {
                    j += (int)(k & 0x01);
                    k >>= 1;
                    if (j > m) 
                    {
                        break;
                    }
                }
                if (j == m)
                {
                    k = 0x01;
                    for (int l = n-1; l>=0; l--)
                    {
 &