#12307: C++ 簡易參考解答


shawn2000100 (東華財金)

學校 : 國立東華大學
編號 : 57300
來源 : [27.53.168.5]
最後登入時間 :
2021-09-19 19:53:19
a229. 括號匹配問題 -- 名題精選百則 | From: [124.9.161.241] | 發表日期 : 2017-06-30 20:12

#include <cstdio>
#include <vector>
using namespace std;
vector <char> output;
int N;
void dfs ( int left, int right, int level ) {
if ( level == 2 * N ) {
for ( int i = 0; i < 2 * N; i++ )
printf ( "%c", output[i] );
printf ( "\n" );
return;
}
if ( left < N ) {
output.push_back ( '(' );
dfs ( left + 1, right, level + 1 );
output.pop_back();
}
if ( left > right ) {
output.push_back ( ')' );
dfs ( left, right + 1, level + 1 );
output.pop_back();
}
}
int main ( void ) {
while ( ~scanf ( "%d", &N ) ) {
dfs ( 0, 0, 0 );
printf ( "\n" );
}
}

 
ZeroJudge Forum