(Flower and Moon)数组组合

对于2个字符,能罗列出多少种组合
先是女士的先入座,先递归FFF的,再递归FF的,最后递归F的,同理男生先入座,先递归MMM,再MM,再M的

Program.cs
    class Test
    {
    static void Main(string[] arg)
    {
        var flower=new Flower();
        var result=flower.Permute(3);
        foreach (var item in result)
        {
            System.Console.WriteLine(item);
        }
    }
    }
Flowe.cs
    public class Flower
    {
        private IList<String> result;

        public IList<String> Permute(int n)
        {
            result=new List<string>();
            //男女
            // DFS(n,1,0,"F");
            // DFS(n,0,1,"M");
            DFS(n,1,0,"F");
            return result;
        }

        private void DFS(int n,int fc,int mc,string str)
        {
            if(fc==n&&mc==n)
            {
                result.Add(str);
                return;
            }

            //有男女
            // if(fc<n) DFS(n,fc+1,mc,str+"F");
            // if(mc<n) DFS(n,fc,mc+1,str+"M");

            //女士优先
            if(fc<n) DFS(n,fc+1,mc,str+"F");
            if(mc<fc) DFS(n,fc,mc+1,str+"M");
        }
    }
posted @ 2022-02-13 22:39  Ariaaaaa  阅读(6)  评论(0)    收藏  举报