Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C#

จะค้นหาการรวมกันของวงเล็บเปิดและปิดจากหมายเลขที่กำหนดโดยใช้ C # ได้อย่างไร


สร้างฟังก์ชันย้อนกลับที่อัปเดตสตริงปัจจุบันหากวงเล็บเปิดน้อยกว่า 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();
      }
   }
}

ผลลัพธ์

{}{}
{{}}