我在网上找到了这个算法并且它可以工作,但我不知道为什么 . 即使有一个视频解释它 .

这是代码:

public int numberOfSolutionsOnSpace(int total, int arr[]){

    int temp[] = new int[total+1];

    temp[0] = 1;
    for(int i=0; i < arr.length; i++){
        for(int j=1; j <= total ; j++){
            if(j >= arr[i]){
                temp[j] += temp[j-arr[i]];
            }
        }
    }
    return temp[total];
}

说明:YouTube

你能帮我理解为什么这个算法有效吗?确切地说,我不明白为什么我们必须“回到步骤并添加”(视频2:30)