拼多多服务端第二题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:15
我dfs案例过了,但是不ac,我太难了
点赞 回复 分享
发布于 2019-09-01 17:09
DFS就可以解决了
点赞 回复 分享
发布于 2019-09-01 17:08
点赞 回复 分享
发布于 2019-09-01 17:08
大佬厉害了
点赞 回复 分享
发布于 2019-09-01 17:07

相关推荐

不愿透露姓名的神秘牛友
07-09 13:05
TMD找工作本来就烦,这东西什么素质啊😡
Beeee0927:hr是超雄了,不过也是有道理的
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-08 17:10
点赞 评论 收藏
分享
Twilight_m...:表格简历有点难绷。说说个人看法: 1.个人基本情况里好多无意义信息,什么婚姻状况、健康状况、兴趣爱好、户口所在地、身份证号码、邮政编码,不知道的以为你填什么申请表呢。 2.校内实践个人认为对找工作几乎没帮助,建议换成和测开有关的项目,实在没得写留着也行。 3.工作经历完全看不出来是干什么的,起码看着和计算机没啥关系,建议加强描述,写点你在工作期间的实际产出、解决了什么问题。 4.个人简述大而空,看着像AI生成,感觉问题最大。“Python,C,C++成为我打造高效稳定服务的得力工具”、“我渴望凭借自身技术知识与创新能力,推动人工智能技术的应用发展,助力社会实现智能化转型”有种小学作文的美感。而且你确定你个人简述里写的你都会嘛?你AI这块写的什么“深入研究”,发几篇顶会的硕博生都不一定敢这么写。而且你AI这块的能力和软测也完全无关啊。个人简述建议写你对哪些技术栈、哪些语言、哪些生产工具的掌握,写的有条理些,而且最好是和测开强相关的。
点赞 评论 收藏
分享
评论
点赞
6
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务