如何使用 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();
}
}
}輸出
{}{}
{{}}
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP