kmjp's blog

競技プログラミング参加記です

yukicoder : No.2143 Only One Bracket

入力がえらく小さな問題。
https://yukicoder.me/problems/no/2143

問題

正整数Nが与えられる。
以下を満たすN個の括弧列S[i]を求めよ。

  • Sの総長はN^2以下
  • Sを並べたとき、正しい括弧列となる並べ方は1通り

解法

最後の1個を除き、i個目の括弧列では、i個の閉じ括弧のあと(i+1)個の開き括弧を取ればよい。
最後の1個は、N-1個の閉じ括弧とする。

こうすると、この順の並び以外は閉じ括弧が開き括弧より先行してしまい不可である。

int N;

void solve() {
	int i,j,k,l,r,x,y; string s;
	
	cin>>N;
	FOR(i,N-1) {
		cout<<string(i,')');
		cout<<string(i+1,'(');
		cout<<endl;
	}
	cout<<string(N-1,')')<<endl;
	
}

まとめ

★2~2.5でもいい気はする。