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

求一个C#排列算法,要得到具体的数据,不是一共多少个
有M位数据,每位只能是1或者0,我把X个1入进去。列出所有组合数据。M>=2.0<X<=M;

如:M=2,X=1 结果如下:
1 0
0 1
如:M=X=2,结果如下:
1 1

我要得到这些数据。请问怎么用C#实现方法
public string[] ZhuHe(int M,int X);
把结果返回到一个数组里。请问方法怎么实现。谢谢。

------解决方案--------------------
 public class PermutationAndCombination<T>
    {
        /// <summary>
        /// 交换两个变量
        /// </summary>
        /// <param name="a">变量1</param>
        /// <param name="b">变量2</param>
        public static void Swap(ref T a, ref T b)
        {
            T temp = a;
            a = b;
            b = temp;
        }

        /// <summary>
        /// 递归算法求数组的组合(私有成员)
        /// </summary>
        /// <param name="list">返回的范型</param>
        /// <param name="t">所求数组</param>
        /// <param name="n">辅助变量</param>
        /// <param name="m">辅助变量</param>
        /// <param name="b">辅助数组</param>
        /// <param name="M">辅助变量M</param>
        private static void GetCombination(ref List<T[]> list, T[] t, int n, int m, int[] b, int M)
        {
            for (int i = n; i >= m; i--)
            {
                b[m - 1] = i - 1;
                if (m > 1)
                {
                    GetCombination(ref list, t, i - 1, m - 1, b, M);
                }
                else
                {
                 &n