如何使用 C# 从给定的数字 k 中找到所有不同的左括号和右括号组合?

创建一个回溯函数,如果左括号小于 n 或右括号小于左括号,则更新当前字符串。当当前字符串的长度等于 2*n 时,将其添加到组合结果数组中。可以通过保持 {} 放置的数量来简单地跟踪它。如果我们还有一个左括号可以放置,我们可以开始一个左括号。如果不超过左括号的数量,我们可以开始一个右括号。

示例

using System;

using System.Collections.Generic;

using System.Text;

using System.Linq;

namespace ConsoleApplication{

   public class BackTracking{

      public void Brackets(){

         char[] arr = new char[4];

         FindSequence(arr, 0, 2, 0, 0);

      }

      private static void FindSequence(char[] arr, int index, int N, int openBracket, int closeBracket){

         if (closeBracket == N){

            StringBuilder s = new StringBuilder();

            for (int i = 0; i < arr.Length; i++){

               s.Append(arr[i]);

            }

            Console.WriteLine(s);

            s = null;

               return;

         }

         else{

            if (openBracket > closeBracket){

               arr[index] = '}';

               FindSequence(arr, index + 1, N, openBracket, closeBracket + 1);

            }

            if (openBracket < N){

               arr[index] = '{';

               FindSequence(arr, index + 1, N, openBracket + 1, closeBracket);

            }

         }

      }

   }

   class Program{

      static void Main(string[] args){

         BackTracking b = new BackTracking();

         b.Brackets();

      }

   }

}

输出结果
{}{}

{{}}

以上是 如何使用 C# 从给定的数字 k 中找到所有不同的左括号和右括号组合? 的全部内容, 来源链接: utcz.com/z/358935.html

回到顶部