![]()
/*
有效的括号--回溯法。
*/
#include<stdio.h>
#include<malloc.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include <iostream>
void generate(int left,int right,int n,char *str,int index,char** rs,int *returnSize){
if(left==n&&right==n){
rs[(*returnSize)]=(char*)malloc(sizeof(char)*(2*n+1));
str[index]='\0';
strcpy(rs[(*returnSize)],str);
(*returnSize)++;
printf("%s ",str);
return;
}
if(left<n){
str[index]='(';
generate(left+1,right,n,str,index+1,rs,returnSize);
}
if(right<n&&right<left){
str[index]=')';
generate(left,right+1,n,str,index+1,rs,returnSize);
}
}
char ** generateParenthesis(int n, int* returnSize){
char *str=(char*)malloc(sizeof(char)*(2*n+1));
char **rs=(char**)malloc(sizeof(char*)*2500);
(*returnSize)=0;
generate(0,0,n,str,0,rs,returnSize);
}
int main()
{
char **rs=(char**)malloc(sizeof(char*)*2500);
int *returnSize=(int*)malloc(sizeof(int)*(7));
rs=generateParenthesis(3,returnSize);
return 0;
}