描述
小欧想要构造一个合法的括号序列满足以下条件:
1.括号序列长度恰好为2×n。
2.括号序列的嵌套层数最大值为r。
括号嵌套层数是指在一个字符串中,以左括号 "(" 和右括号 ")" 形成的括号对的最大嵌套深度。
例如,在字符串 "((())())" 中,括号嵌套层数最大值为 3。输入描述:
一行两个整数n,r(1≤r≤n≤10^5)。
输出描述:
一行一个字符串表示括号序列。若有多种构造方案,输出任意一个即可。
示例1
输入:
3 2输出:
()(())
一、问题分析
首先读题,仔细看描述中的内容,发现需求是
1.给定两个数字n和r
2.构造最大深度为r的括号序列,其中括号的数量为n*2。
3.()一个括号的深度为1,(())一个括号包括一个括号,深度为2
二、解题思路
1.首先,为了满足条件我们的深度r应该小于等于n
2.如果满足条件,我们可以直接先输出r个左括号,然后再输出r个右括号
3.接下来还剩下n-r个左右括号
4.输出(n-r)个“()”就可以了
三、具体步骤
使用的语言是C
#include <stdio.h>int main() {int n, r;while (scanf("%d %d", &n, &r) != EOF) {// 如果r大于n/2那么无法完成if(r > n ) {printf("error");return 0;}for(int i = 0; i < r; i++) {printf("(");}for(int i = 0; i < r; i++) {printf(")");}for(int i = 0; i < n - r; i++) {printf("()");}}return 0;
}