1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
List<String> ans; public List<String> (String num, int target) { ans = new ArrayList<>(); if (num == null || num.length() == 0) return ans; dfs(num, "", 0, 0, target, 0); return ans;
} public void dfs(String num, String path, int begin, long sum, int target, long prev) { if (begin >= num.length()) { if (sum == target) { ans.add(path); } return; } for (int i = begin; i < num.length(); ++i) { if (i != begin && num.charAt(begin) == '0') break; long val = Long.parseLong(num.substring(begin, i + 1)); if (begin == 0) { dfs(num, path + val, i + 1, 0 + val, target, val); } else { dfs(num, path + "+" + val, i + 1, sum + val, target, val); dfs(num, path + "-" + val, i + 1, sum - val, target, -val); dfs(num, path + "*" + val, i + 1, sum + val * prev - prev, target, val * prev); } } }
|
近期评论