如何使用 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();
      }
   }
}

輸出

{}{}
{{}}

更新日期: 2021 年 8 月 27 日

已觀看 310 次

開啟您的 職業生涯

完成課程後獲得認證

開始
廣告
© . All rights reserved.