我该如何安排。数字......这样每个由排列形成的新数字与前一个最大值的差异最大为 1。
例如,如果输入为 k=1,则输出将为 1
如果 k =2 输出是:11, 12 2,1 是错误的,因为最左边的必须始终为 1。
如果 k = 3 输出为:111,112, 121, 122, 123
如果 k = 4:1111,1112,1121,1122,1123,1212,1211,1213,1223,1221,1222,1233,1234
1423 是错误的 diff b/w 1 和 4 是 3。 1243 是错误的 diff b/w 2 和 4 是 2....
如果可能的话,我如何使用 DP 来做到这一点?
这是上述问题的解决方案之一......任何人都可以帮助我理解这段代码......提前致谢......
public class MaxOneDiff {
    public static void main(String[] args) {
        int k = 4;
        getList(k);
    }
    public static void getList(int k) {
        int arr[] = new int[k];
        int index = 0;
        printRecList(k, arr, index, k);
    }
    public static void printRecList(int k, int arr[], int index, int range) {
        if (k == 0) {
            for (int i = 0; i < arr.length; i++) {
                System.out.print(arr[i]);
            }
            System.out.println();
        } else {
            for (int i = 1; i <= range; i++) {
                if (index == 0) {
                    arr[index] = i;
                    printRecList(k - 1, arr, index + 1, range);
                } else {
                    int t = arr[index-1]-i;
                    t = t > 0 ? t : -t;
                    if (t < 2) {
                        arr[index] = i;
                        printRecList(k - 1, arr, index + 1, range);
                    }
                }
            }
        }
    }
}