C#:0& 1个排列

时间:2010-08-09 03:46:15

标签: c# permutation combinations

我想列出只有0和1的排列。类似于二进制但允许变量长度,不必等于8长度。例如:

0
1
00
01
10
11
000
001
010
011
100
101
110
111

一直到X的长度都满足。怎么办呢?

2 个答案:

答案 0 :(得分:5)

您也可以使用:

using System;

class Test
{
    static void permute(int len)
    {
        for (int i=1; i<=len; i++) 
        {
            for (int j=0; j<Math.Pow(2, i); j++)
            {
                Console.WriteLine (Convert.ToString(j, 2).PadLeft(i, '0'));
            }
        }
    }
}

不涉及递归:)

答案 1 :(得分:4)

我会将此作为递归调用,一个函数执行所有特定长度,另一个函数调用所有相关长度。以下完整的C#2008控制台应用程序显示了我的意思:

using System;

namespace ConsoleApplication1 {
    class Program {
        static void permuteN(string prefix, int len) {
            if (len == 0) {
                System.Console.WriteLine(prefix);
                return;
            }
            permuteN(prefix + "0", len - 1);
            permuteN(prefix + "1", len - 1);
        }

        static void permute(int len) {
            for (int i = 1; i <= len; i++)
                permuteN("", i);
        }

        static void Main(string[] args) {
            permute(3);
        }
    }
}

输出:

0
1
00
01
10
11
000
001
010
011
100
101
110
111

这就是我认为你所追求的。