程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c#-C# 兩個孩子,一個孩子將a b c d 4個球放入一個只有一端開放的細管子裡

c#-C# 兩個孩子,一個孩子將a b c d 4個球放入一個只有一端開放的細管子裡

編輯:編程綜合問答
C# 兩個孩子,一個孩子將a b c d 4個球放入一個只有一端開放的細管子裡

C# 兩個孩子,一個孩子將a b c d 4個球放入一個只有一端開放的細管子裡
輸出所有順序

最佳回答:


 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static IEnumerable<string> foo(string seed, int max)
        {
            if (seed.Count(x => x == '+') == max && seed.Count(x => x == '-') == max)
                yield return seed;
            if (seed.Count(x => x == '+') > seed.Count(x => x == '-'))
                foreach (string s in foo(seed + "-", max))
                    yield return s;
            if (seed.Count(x => x == '+') <= max)
                foreach (string s in foo(seed + "+", max))
                    yield return s;
        }

        static void display(string s)
        {
            Console.Write(s + "\t");
            char c = 'a';
            Stack<char> st = new Stack<char>();
            foreach (char ch in s)
            {
                if (ch == '+') st.Push(c++);
                if (ch == '-') Console.Write(st.Pop());
            }
            Console.WriteLine();
        }
        static void Main(string[] args)
        {
            foreach (string s in foo("", 4)) display(s);
        }
    }
}

+-+-+-+- abcd
+-+-++-- abdc
+-++--+- acbd
+-++-+-- acdb
+-+++--- adcb
++--+-+- bacd
++--++-- badc
++-+--+- bcad
++-+-+-- bcda
++-++--- bdca
+++---+- cbad
+++--+-- cbda
+++-+--- cdba
++++---- dcba
Press any key to continue . . .

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved