首页 > 解决方案 > 用正确的返回写矩阵递归?

问题描述

此代码使用递归打印存储在数组输入中的给定数字集的所有子集。子集存储在称为输出的二维矩阵中。输入是由接口直接给出的,所以我什么都不用做。

第一列具有行中数字的大小。例如,如果第 3 行有 2 个元素,则第 3 行的第一个索引将存储 2。如果没有元素,则输入 0。

最后,我必须返回ans2d 矩阵中包含有效输出的行数。

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;
}

标签: arraysalgorithmrecursion

解决方案


推荐阅读