拼多多服务端第二题ac代码...

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


}
我太难了....#拼多多##笔试题目##题解#
全部评论
大佬厉害了
点赞 回复
分享
发布于 2019-09-01 17:07
点赞 回复
分享
发布于 2019-09-01 17:08
联易融
校招火热招聘中
官网直投
DFS就可以解决了
点赞 回复
分享
发布于 2019-09-01 17:08
我dfs案例过了,但是不ac,我太难了
点赞 回复
分享
发布于 2019-09-01 17:09
调格式调了半个小时 我吐了
点赞 回复
分享
发布于 2019-09-01 17:15

相关推荐

点赞 6 评论
分享
牛客网
牛客企业服务