C#排列组合返回结果

请问,C#编写的排列组合算法,用的是递归算法,如何把最好的组合结果返回出来,存储到一个数组中(我想返回下面代码中的"lin",但怎么弄返回都是空的)staticvoidS... 请问,C#编写的排列组合算法,用的是递归算法,如何把最好的组合结果返回出来,存储到一个数组中(我想返回下面代码中的"lin",但怎么弄返回都是空的)

static void Select(int currentIndex, int remain, string currentSelect,string [] array,out List<string[]> lin)
{
lin = new List<string[]>();

if (remain == 0)
{
string a = currentSelect.Remove(0,1);
Console.WriteLine(a);
string[] bb = a.Split(',');
lin.Add(bb);
return;
}

if (array.Length - currentIndex < remain)
{
return;
}

Select(currentIndex + 1, remain - 1, currentSelect + "," + array[currentIndex],array,out lin);
Select(currentIndex + 1, remain, currentSelect,array,out lin);
}
展开
 我来答
miniappasvheOqNVrfJ1
2017-07-04 · TA获得超过300个赞
知道小有建树答主
回答量:386
采纳率:72%
帮助的人:131万
展开全部
class Program
    {
        /// <summary> 声明委托 </summary>
        /// <param name="bb"></param>
        public delegate void AcquireArray(string[] bb);

        /// <summary> 定义委托变量 </summary>
        static AcquireArray acquireArray;

        static void Main(string[] args)
        {
            ///赋值委托执行方法
            List<string> lin = new List<string>();
            acquireArray = (string[] bb) => { lin.AddRange(bb); };


            Select(0, 5, "as", new string[] {"1","2","3","4","5" });

            Console.WriteLine();
            Console.WriteLine("下面数据为list内存储数据:");
            Console.WriteLine(string.Join("\r\n", lin));
            Console.ReadKey();
        }

        static void Select(int currentIndex, int remain, string currentSelect, string[] array)
        {
            if (remain == 0)
            {
                string a = currentSelect.Remove(0, 1);
                Console.WriteLine(a);
                string[] bb = a.Split(',');

                ///执行这个委托
                acquireArray.Invoke(bb);
                return;
            }

            if (array.Length - currentIndex < remain)
            {
                return;
            }

            Select(currentIndex + 1, remain - 1, currentSelect + "," + array[currentIndex], array);
            Select(currentIndex + 1, remain, currentSelect, array);
        }
    }
三天打鱼N
2017-06-23 · TA获得超过1540个赞
知道大有可为答主
回答量:2032
采纳率:74%
帮助的人:605万
展开全部
删除out 试试……
刚刚看了看 你第一句 lin=new…… 那么进入下一个函数时就把上一次的结果清空了……
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式