Python代码到Java代码的转换

2024-03-29 10:32:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我用python编写了一些代码,效果非常好,我试图用Java实现它,但遇到了一些小麻烦。这是一个简单的21个问题,使用回溯,从用户那里获取字符串输入,例如“1 9 10”

下面是python代码:

def twentyone(nums, stack = [], answer = set()):
    for index, num in enumerate(nums):
        new_stack = stack + [num]
        total = sum(new_stack)
        if total == 21:
            answer.add(tuple(new_stack))
        elif total < 21:
            twentyone(nums[index + 1:], new_stack, answer)
    return answer

user_input = input()
list_format = [int(x) for x in user_input.split()]
answer = twentyone(list_format)

if len(answer) == 0:
    print("No combination of numbers add to 21")
for solution in answer:
    print("The values ", end = "")
    for number in solution:
            print("{} ".format(number), end = "")
    print("add up to 21")

这是我的java代码(到目前为止)

public class TwentyOne {

   public static void main(String args[]){
      Scanner userInput = new Scanner(System.in);
      String stringInput = userInput.nextLine();

      ArrayList<Integer> allNum = new ArrayList<>();
      for (String num : stringInput.split(" ")){
         allNum.add(Integer.parseInt(num));
      }

      HashSet<ArrayList<Integer>> answer = twentyOne(allNum);

      for (ArrayList<Integer> solution : answer){
         System.out.print("The values ");
         for (Integer num : solution){
            System.out.print(num + " ");
         }
         System.out.println("Add up to 21");
      }
   }



   private static HashSet twentyOne(ArrayList<Integer> user_input){

      return new HashSet<ArrayList<Integer>>();
   }
}

基本上,如果没有参数中的变量初始化,我就无法编写java递归问题。你知道吗

def twentyone(nums, stack = [], answer = set()):

所以我的问题是,在我将要进行递归调用的方法中,如何在没有变量初始化的情况下处理java回溯?你知道吗


Tags: answerinaddnewforinputstackinteger
1条回答
网友
1楼 · 发布于 2024-03-29 10:32:23

您可以编写一个传递默认参数的包装器方法。e、 g.:

twentyone(List<Integer> nums) {
    twentyoneRecursive(nums, new ArrayDeque<>(), new HashSet<>());
}

twentyoneRecursive(List<Integer> nums, Deque<Integer> stack, Set<List<Integer>> answer) {
    ...
    twentyoneRecursive(...);
}

相关问题 更多 >