我哪里出错了?

int subset(int input[], int n, int A[][20]) {
    if(n==0)
        return 0;
    int ans=subset(input+1,n-1,A[][20]);        //recursive call    
    for(int i=0;i<ans;i++){                     
            int x=A[i][0];
            for(int j=0;j<x;j++){
        A[i+ans][j]=A[i][j];
        }
    }
    for(int i=ans;i<ans*2;i++){
        int x=A[i][0];
            for(int j=x;j>0;j--){
                A[i][j+1]=A[i][j];
            }
    }
    for(int i=0;i<ans*2;i++){
        A[i][0]++;

    }
    for(int i=ans;i<ans*2;i++)
        A[i][1]=input[0];

    return ans*2;
}

使用递归,此代码将打印存储在数组输入中的给定数字集的所有子集。子集存储在称为输出的2D矩阵中。输入直接由接口给出,因此我无需执行任何操作。第一列具有该行中数字的大小。例如,如果第3行有2个元素,则第3行的第一个索引将存储2个元素。如果没有元素,则输入0。 最后,我必须返回ans,它是2d矩阵中包含有效输出的所有行的编号。