中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

網(wǎng)站規(guī)劃主要內(nèi)容開網(wǎng)店哪個平臺靠譜

網(wǎng)站規(guī)劃主要內(nèi)容,開網(wǎng)店哪個平臺靠譜,廣西住房建設(shè)部網(wǎng)站,張家界做網(wǎng)站題解 給定 n 對括號,要求編寫一個函數(shù)生成所有合法的括號組合。合法的括號組合必須滿足每一對括號中的左括號必須先于右括號,并且括號數(shù)量必須平衡。 題目描述 輸入: 一個整數(shù) n,表示括號的對數(shù),滿足 0 ≤ n ≤ 1…

題解

給定 n 對括號,要求編寫一個函數(shù)生成所有合法的括號組合。合法的括號組合必須滿足每一對括號中的左括號必須先于右括號,并且括號數(shù)量必須平衡。

題目描述

輸入:

  • 一個整數(shù) n,表示括號的對數(shù),滿足 0 ≤ n ≤ 10 0 \leq n \leq 10 0n10。

輸出:

  • 返回一個包含所有合法括號組合的字符串數(shù)組。

示例1

輸入:

1

輸出:

["()"]

示例2

輸入:

2

輸出:

["(())", "()()"]

題解思路

這個問題是一個典型的遞歸回溯問題。我們可以通過遞歸來生成所有可能的括號組合。具體步驟如下:

  1. 用遞歸函數(shù)生成括號的組合。
  2. 每次遞歸調(diào)用時,有兩個選擇:
    • 如果左括號還沒有用完,就添加一個左括號 '('
    • 如果右括號的數(shù)量小于左括號的數(shù)量,且右括號還沒有用完,就添加一個右括號 ')'。
  3. 當左右括號的數(shù)量都達到了 n 時,表示一個合法的組合已經(jīng)完成,將其加入結(jié)果數(shù)組。

時間復雜度和空間復雜度

  • 時間復雜度:O( 2 n 2^n 2n),因為每一層遞歸有兩種選擇(添加左括號或右括號)。
  • 空間復雜度:O( n n n),由于遞歸調(diào)用棧的深度是 n,每次遞歸都在 2n 長度的字符串上操作。

代碼實現(xiàn)

#include <stdio.h>
#include <stdlib.h>
#include <string.h>/*** 深度優(yōu)先搜索(DFS)函數(shù),用于生成所有有效的括號組合* * @param left 左括號的數(shù)量* @param right 右括號的數(shù)量* @param ret 存儲所有生成的括號組合的數(shù)組* @param path 當前路徑,即當前生成的括號組合* @param n 括號對數(shù)* @param returnSize 當前已生成的括號組合數(shù)量*/
void DFS(int left, int right, char **ret, char* path, int n, int *returnSize) {// 如果左括號和右括號的數(shù)量都等于 n,說明生成了一個有效的括號組合if (left == n && right == n) {// 為當前括號組合分配內(nèi)存,長度為 2n + 1(包括字符串終止符)ret[*returnSize] = malloc(sizeof(char) * (2 * n + 1));if (ret[*returnSize] == NULL) {printf("Memory allocation failed\n");exit(1);}// 將當前路徑復制到結(jié)果數(shù)組中for (int i = 0; i < 2 * n; i++) {ret[*returnSize][i] = path[i];}ret[*returnSize][2 * n] = '\0'; // 添加字符串終止符// 增加已生成的括號組合數(shù)量(*returnSize)++;return;}// 如果左括號的數(shù)量小于 n,可以添加一個左括號if (left < n) {path[left + right] = '('; // 在當前路徑中添加左括號DFS(left + 1, right, ret, path, n, returnSize); // 遞歸調(diào)用,繼續(xù)生成}// 如果右括號的數(shù)量小于左括號的數(shù)量且小于 n,可以添加一個右括號if (right < left && right < n) {path[left + right] = ')'; // 在當前路徑中添加右括號DFS(left, right + 1, ret, path, n, returnSize); // 遞歸調(diào)用,繼續(xù)生成}
}/*** 主函數(shù),生成所有有效的括號組合* * @param n 括號對數(shù)* @param returnSize 返回的括號組合數(shù)量* @return 存儲所有有效括號組合的數(shù)組*/
char** generateParenthesis(int n, int *returnSize) {// 預(yù)分配足夠大的空間存儲結(jié)果,這里假設(shè)最多有 2000 種組合char** ret = (char**)malloc(sizeof(char*) * 2000);if (ret == NULL) {printf("Memory allocation failed\n");exit(1);}*returnSize = 0; // 初始化返回的括號組合數(shù)量為 0// 為當前路徑分配內(nèi)存,長度為 2n + 1(包括字符串終止符)char* path = (char*)malloc(sizeof(char) * (2 * n + 1));if (path == NULL) {printf("Memory allocation failed\n");exit(1);}// 調(diào)用 DFS 函數(shù)生成所有有效的括號組合DFS(0, 0, ret, path, n, returnSize);// 釋放當前路徑的內(nèi)存free(path);return ret;
}

解析

  1. DFS函數(shù)的遞歸邏輯:

    • DFS(left, right, ret, str, n, returnSize)是遞歸的核心函數(shù),leftright 分別表示已使用的左括號和右括號數(shù)量。
    • 如果leftright都達到了n,就將當前字符串str(存放括號組合)存入ret數(shù)組。
    • 如果left < n,我們可以繼續(xù)添加左括號。
    • 如果right < left,我們可以繼續(xù)添加右括號。
  2. 空間分配:

    • 結(jié)果數(shù)組ret被分配了2000個空間,可以容納所有合法組合(理論上可能達到O(4^n)個組合,但實際上不會達到這么多)。
    • 每個合法的括號組合是一個長度為2n的字符串,因此str的長度是2n。
  3. 返回值:

    • ret返回存放合法括號組合的數(shù)組,returnSize返回合法組合的數(shù)量。

總結(jié)

通過遞歸的方式,我們能夠高效地生成所有合法的括號組合。遞歸回溯方法簡潔而直觀,適合解決此類組合生成的問題。

http://www.risenshineclean.com/news/60347.html

相關(guān)文章:

  • 專門制作視頻的軟件視頻優(yōu)化軟件
  • wordpress創(chuàng)建知識庫seo網(wǎng)站優(yōu)化培訓要多少錢
  • 政府部門網(wǎng)站建設(shè)推廣文案
  • 檔案網(wǎng)站建設(shè)網(wǎng)頁百度廣告怎么收費標準
  • 企業(yè)網(wǎng)站建設(shè) 新聞宣傳關(guān)鍵詞有哪些
  • 分類網(wǎng)站建設(shè)國內(nèi)網(wǎng)站建設(shè)公司
  • 孕婦做兼職上哪家網(wǎng)站深圳網(wǎng)絡(luò)推廣建站
  • 網(wǎng)站建設(shè) 核對流程網(wǎng)站seo優(yōu)化服務(wù)
  • 電商類網(wǎng)站開發(fā)百度指數(shù)怎么提升
  • 網(wǎng)站開發(fā)實戰(zhàn)教程保定seo推廣公司
  • 成人大專報考條件seo 重慶
  • wordpress大數(shù)據(jù)插件搜索引擎優(yōu)化代理
  • 大學培訓中心網(wǎng)站建設(shè)系統(tǒng)清理優(yōu)化工具
  • 濟南行知網(wǎng)站建設(shè)全國唯一一個沒有疫情的城市
  • 數(shù)字中國建設(shè)峰會 官方網(wǎng)站seo引擎優(yōu)化方案
  • 網(wǎng)站設(shè)計開發(fā)中的具體步驟站長之家域名信息查詢
  • 做mg動畫賺錢網(wǎng)站小紅書seo
  • 網(wǎng)站上的圖片一般多大網(wǎng)站統(tǒng)計系統(tǒng)
  • 地方生活門戶網(wǎng)站名稱網(wǎng)站運營與維護
  • 淮北做網(wǎng)站公司百度經(jīng)驗官網(wǎng)首頁
  • 注冊公司域名后如何做網(wǎng)站愛站網(wǎng)域名查詢
  • 軟件工程分為幾個階段網(wǎng)站seo入門基礎(chǔ)教程書籍
  • 做網(wǎng)站做地區(qū)好還是全國的好處谷歌seo搜索引擎
  • 可以看任何東西的瀏覽器seo是什么車
  • 淄博建設(shè)局網(wǎng)站網(wǎng)站推廣關(guān)鍵詞工具
  • 合肥專業(yè)手機網(wǎng)站制作價格網(wǎng)站流量統(tǒng)計分析
  • 開發(fā)網(wǎng)站網(wǎng)絡(luò)公司百度在西安有分公司嗎
  • 廉政網(wǎng)站建設(shè)經(jīng)驗交流今日nba戰(zhàn)況
  • 織夢怎么查看網(wǎng)站點擊夫唯seo
  • 網(wǎng)站的系統(tǒng)建設(shè)方式有哪些內(nèi)容個人網(wǎng)頁模板