【leetcode】22. 括号生成
-
void recursion(char** arr,char* s,int cur,int cnt,int num,int n,int* returnSize){ if (cur == n*2){ arr[(*returnSize)] = (char*)calloc(n*2 + 1, sizeof(char)); strcat(arr[(*returnSize)++], s); return; } for (int i = 0; i < 2; i++){ if(num==0 && i==1 || num==n && i==0 || cnt==n && i==0 || cnt==0 && i==1) continue; s[cur] = (i)?')' :'('; recursion(arr, s, cur+1, (i)?cnt-1 :cnt+1, (i==0)?num+1 :num, n, returnSize); s[cur] = '\0'; } } char ** generateParenthesis(int n, int* returnSize){ *returnSize = 0; char** arr = (char**)calloc(10000, sizeof(char*)); char* s = (char*)calloc(n*2+1, sizeof(char)); if (n==0) return NULL; recursion(arr,s, 0, 0, 0, n,returnSize); return arr; }