/** * Return an array of arrays of size *returnSize. * Note: The returned array must be malloced, assume caller calls free(). */ void backtracking(int* nums, int start, int numsSize, int* returnSize) { if(start == numsSize) return; else if(start == numsSize -1) { //add all to result } else backtracking(nums, start + 1, numsSize, returnSize); } int** permute(int* nums, int numsSize, int* returnSize) { for(int i = 0; i < numsSize; i++) { backtracking(nums, i, numsSize, returnSize); } }