public boolean dfs(int[] nums, int begin, int target, int sum) {
        if (begin == nums.length) {
            if (sum == target)
                return true;
            return false;
        }
        int tmp = 0;
        for (int i = begin; i < nums.length; ++i) {
            tmp = tmp * 10 + nums[i];
            if (tmp > target) {
                return false;
            }
            if (dfs(nums, i + 1, target, sum + tmp))
                return true;

        }
        return false;
    }