打印匹配括号

来源:互联网 发布:达内的大数据怎么样 编辑:程序博客网 时间:2024/05/22 10:57
开始抽空做一些算法题,留下记录作为菜鸟的成长见证吧。
这道题来自于Cracking the Coding Interview, 要求打印n对括号的所有可能匹配。
我采用递归来做,这样编写比较方便而且容易弄懂,但用迭代应该会效率快不少而且递归一定能转换成迭代吧,以后有空研究下

代码如下:


#include "stdafx.h"#include <cstring>#include <iostream>#include <time.h>using namespace std;char *ca;void JudgeandDisplay(int currentcount,size_t totalsize,size_t pos){if(pos==totalsize-2){ca[pos+1]=')';cout<<ca<<endl;}else{if(currentcount>=0&&tcount<totalsize-pos-1){ca[pos+1] = '(';JudgeandDisplay(currentcount+1,totalsize,pos+1);}if(currentcount>0&&tcount<=totalsize-pos-1){ca[pos+1] = ')';JudgeandDisplay(currentcount-1,totalsize,pos+1);}return;}}int _tmain(int argc, _TCHAR* argv[]){int n;cin>>n;size_t totalsize=2*n;time_t timebegin=time(NULL);ca = new char[totalsize];ca[0]='(';JudgeandDisplay(1,totalsize,0);delete[] ca;cout<<"time used: "<<time(NULL)-timebegin<<" seconds"<<endl;return 0;}