Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

โปรแกรม C++ หาลำดับวงเล็บที่ถูกต้อง n ลำดับ


คำอธิบายปัญหา

สมมติว่าเรามีตัวเลข n ลำดับวงเล็บคือสตริงที่มีเฉพาะ '(' และ ')' ลำดับวงเล็บที่ถูกต้องคือลำดับที่สามารถแปลงเป็นนิพจน์คณิตศาสตร์ที่ถูกต้องได้โดยแทรก '1' และ '+' ระหว่างตัวอักษร ตัวอย่าง "()()" ถูกต้องเพราะกลายเป็น "(1)+(1)" จาก n ต้องการหาลำดับวงเล็บที่ถูกต้อง n ลำดับที่มีความยาว 2n และต่างกันทั้งหมด

ตัวอย่าง: n = 4 ผลลัพธ์คือ ["()()()()", "(())()()", "((()))()", "(((())))"]

ขั้นตอนการแก้ปัญหา

สำหรับ k := 1 ถึง n:
    สำหรับ i := 1 ถึง k: พิมพ์ "("
    สำหรับ i := 1 ถึง k: พิมพ์ ")"
    สำหรับ i := k+1 ถึง n: พิมพ์ "()"
    ขึ้นบรรทัดใหม่

ตัวอย่างโค้ด C++

#include <bits/stdc++.h>
using namespace std;

void solve(int n) {
    for (int k = 1; k <= n; k++) {
        for (int i = 1; i <= k; i++)
            cout << "(";
        for (int i = 1; i <= k; i++)
            cout << ")";
        for (int i = k + 1; i <= n; i++)
            cout << "()";
        cout << endl;
    }
}

int main() {
    int n = 4;
    solve(n);
}

อินพุต

4

เอาต์พุต

()()()() (())()() ((()))() (((())))