拼多多笔试第二道,大佬来看看为什么错
思路感觉没问题,自测也没问题,但是就死活0%,是不是格式哪里有问题
就是回溯加剪枝
// 本题为考试单行多行输入输出规范示例,无需提交,不计分。 import java.util.ArrayList; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int epoch = in.nextInt(); String[][] input = new String[epoch][2]; for(int round = 0;round < epoch;round++){ input[round][0] = in.next(); input[round][1] = in.next(); } String out = ""; for(int round = 0;round < epoch;round++){ // String source_string = in.next(); // String target_string = in.next(); String source_string = input[round][0]; String target_string = input[round][1]; char[] source_array = source_string.toCharArray(); ArrayList<char[]> result_array = new ArrayList<>(); char[] method = new char[source_array.length]; for(int i = 0;i < method.length;i++){ method[i] = 'd'; } helper(source_array, 0, "", method, target_string, result_array); String output = "{\n"; for(char[] arr:result_array){ for(int i = 0;i < arr.length;i++){ output += arr[i] + " "; } output += "\n"; } if(round == epoch - 1){ output += "}"; }else{ output += "}\n"; } out += output; } System.out.println(out); } private static void helper(char[] source_array, int source_index, String result_tmp, char[] method, String target_string, ArrayList<char[]> result_array) { if (result_tmp.equals(target_string)) { result_array.add(method.clone()); return; } if (source_index >= source_array.length) { return; } if (!target_string.contains(result_tmp)){ return; } char current = source_array[source_index]; method[source_index] = 'd'; helper(source_array, source_index + 1, result_tmp, method, target_string, result_array); method[source_index] = 'l'; helper(source_array, source_index + 1, current + result_tmp, method, target_string, result_array); method[source_index] = 'r'; helper(source_array, source_index + 1, result_tmp + current, method, target_string, result_array); } }