日期:2014-05-18  浏览次数:20749 次

一道C#算法题,求高效算法。
一道面试题,如下:

有数组1,2,3,4,5,6,7。按照各种不同的顺序打印出来,其中4不能在第3位,3和5不能相邻。求最高效算法。

------解决方案--------------------
C# code
        static IEnumerable<string> Arrange(string source)
        {
            for (int i = 0; i < source.Length; i++)
            {
                if (source.Length == 1)
                {
                    yield return source;
                }
                else
                {
                    foreach (var x in Arrange(source.Substring(0, i) + source.Substring(i + 1)))
                    {
                        yield return source[i] + x;
                    }
                }
            }
        }