どうすれば手配できますか。数の...配置から形成された各新しい数が前の最大値から最大で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は間違ったdiffb/w1と4は3です。1243は間違ったdiffb/w2と4は2です。
可能であれば、DPを使用してこれを行うにはどうすればよいですか?
これは上記の質問に対する解決策の1つです...誰かが私がこのコードを理解するのを手伝ってくれますか...事前に感謝します...
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);
}
}
}
}
}
}