import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
static List<Character[]> list = new ArrayList<>();
//回溯法
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = Integer.parseInt(in.nextLine());//局数
String[] fromArr = new String[N];
String[] targetArr = new String[N];
for (int k = 0; k < N; k++) {
fromArr[k] = in.nextLine();
targetArr[k] = in.nextLine();
}
for (int i = 0; i < N; i++) {
String from = fromArr[i];
String target = targetArr[i];
list = new ArrayList<>();
fun(new StringBuilder(from), new StringBuilder(), target);
System.out.println("{");
for (int j = 0; j < list.size(); j++) {
for (Character character : list.get(j)) {
System.out.print(character + " ");
}
System.out.println();
}
System.out.println("}");
}
}
//123 -> 3
private static void fun(StringBuilder from, StringBuilder newSeq, String target) {
int length = from.length();
Character[] operation = new Character[length];
fun1(from, newSeq, target, length, operation);
}
private static void fun1(StringBuilder from, StringBuilder newSeq, String target, int index, Character[] operation) {
if (index == 0) {
if (newSeq.toString().equals(target)) {
list.add(operation.clone());
return;
} else {
return;
}
}
//d
operation[operation.length - index] = 'd';
char c0 = from.charAt(0);
from.deleteCharAt(0);
fun1(from, newSeq, target, index - 1, operation);
operation[operation.length - index] = '0';
from.insert(0, c0);
//l
operation[operation.length - index] = 'l';
char c = from.charAt(0);
from.deleteCharAt(0);
newSeq.insert(0, c);
fun1(from, newSeq, target, index - 1, operation);
operation[operation.length - index] = '0';
newSeq.deleteCharAt(0);
from.insert(0, c);
//r
operation[operation.length - index] = 'r';
char c1 = from.charAt(0);
from.deleteCharAt(0);
newSeq.append(c1);
fun1(from, newSeq, target, index - 1, operation);
operation[operation.length - index] = '0';
newSeq.deleteCharAt(newSeq.length() - 1);
from.insert(0, c1);
}
}
我太难了....
#拼多多##笔试题目##题解#