Module: 正确的括号顺序 (RSP)


Problem

4 /6


PSP世代

Theory Click to read/hide

正确的括号序列的生成直接来自检查完成的方式——我们只需要添加新的括号而不违反正确性。这是通过递归迭代完成的。如果你不认识他——是……啊,不,你可以通过进一步阅读来尝试理解。下面是一种括号的代码示例:
 

#include 
#include 

使用 命名空间 std;
int n; //半长
矢量<字符>答; // 我们的答案

void rec(int 余额) {
if (ans.size() == 2 * n) { // 如果是,那么我们完成了
for (int i = 0; i < 2 * n; i++)
输出 <<回答[我] << ” ";
输出 << "\n";
}
if (ans.size() + balance + 2 <= n * 2) { // 检查,我们''ll make it do we clos the new opening brace 
// 注意你的手:我们不需要为每个序列制作一个单独的向量
ans.push_back('(');
记录(余额+ 1);
ans.pop_back(); // 要理解这一点,你需要了解递归。首先,我们向向量添加一个括号,然后再次执行所有这些代码。 
// 也就是再加一个括号,如果可以的话。 
// 这种情况会发生,直到我们开始离开递归——也就是说,直到我们达到所需的长度。 
// 然后开始去掉括号。如果你明白这一点——恭喜你,你真棒。 
}
if (balance > 0) { // 如果我们可以关闭一个括号,我们就关闭它。 
ans.push_back(')');
记录(余额 - 1);
ans.pop_back();
}
}

 int main()
{
辛>>名词;
记录(0);

    返回 0;
}
现在是困难时期 - 您将不得不自己编写几种类型的括号的算法!哈哈哈哈哈哈哈哈哈!

Problem

<分区>

英国科学家公司最具创新性的发展是一种为任何可以使用 tilde-omega-lambda 演算解决的问题寻找解决方案的方法(即,无问题)。为此,他们检查所有可能的长度为 x 的括号序列,其中 x 是公司许多开发中使用的秘密常量的第一位数字。如果 x 是奇数,他们只加一。然后,他们使用神经语言编程和斐波那契计算的 Googold Catalan 数的高级算法来定位术语。但是这些算法已经实现并获得了专利。

你的任务是实现迭代算法。 


输入
输入是秘密常量的第一位数字 - x (\(1 <= x <= 9\))。  ;
 

输出
您需要输出长度为 x 的所有跨度(或 x+1 如果 \(x \% 2 ==1\) ) 按字典序排列。

 

例子
<头> <日># <正文>
输入 输出
1 1
( )
[ ]
{}