Writing an algorithm to decide whether a target number can be reached with a set of other numbers and specific operators?

前端 未结 3 1982
有刺的猬
有刺的猬 2020-12-09 07:01

I\'m trying to learn more about algorithm design, and I\'ve set myself the challenge of creating a simple game that presents users with an array of numbers, a target number,

3条回答
  •  既然无缘
    2020-12-09 07:22

    Here is a Java solution from programcreek.

    public static boolean isReachable(ArrayList list, int target) {
        if (list == null || list.size() == 0)
            return false;
    
        int i = 0;
        int j = list.size() - 1;
    
        ArrayList results = getResults(list, i, j, target);
    
        for (int num : results) {
            if (num == target) {
                return true;
            }
        }
    
        return false;
    }
    
    public static ArrayList getResults(ArrayList list,
            int left, int right, int target) {
        ArrayList result = new ArrayList();
    
        if (left > right) {
            return result;
        } else if (left == right) {
            result.add(list.get(left));
            return result;
        }
    
        for (int i = left; i < right; i++) {
    
            ArrayList result1 = getResults(list, left, i, target);
            ArrayList result2 = getResults(list, i + 1, right, target);
    
            for (int x : result1) {
                for (int y : result2) {
                    result.add(x + y);
                    result.add(x - y);
                    result.add(x * y);
                    if (y != 0)
                        result.add(x / y);
                }
            }
        }
    
        return result;
    }
    

提交回复
热议问题