千家信息网

Java怎么使用数字列表和算术运算获取目标数字

发表于:2024-11-20 作者:千家信息网编辑
千家信息网最后更新 2024年11月20日,今天小编给大家分享一下Java怎么使用数字列表和算术运算获取目标数字的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收
千家信息网最后更新 2024年11月20日Java怎么使用数字列表和算术运算获取目标数字

今天小编给大家分享一下Java怎么使用数字列表和算术运算获取目标数字的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

给定一个数字列表和一个目标数字,编写一个程序来确定是否可以通过对数字列表应用"+-*/"运算来计算目标数字?你可以假设 () 会在必要时自动添加。应在每两个连续数字之间放置一个运算符。所以每个数字都必须使用。

例如,给定 {1,2,3,4} 和 21,返回 true。因为 (1+2)*(3+4)=21

Java解决方案

这是一个分区问题,可以通过使用深度优先搜索来解决。

public 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);     for (int num : results) {        if (num == target) {            return true;        }    }     return false;} public ArrayList getResults(ArrayList list,                                            int left, int right) {    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);        ArrayList result2 = getResults(list, i + 1, right);         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;}

以上就是"Java怎么使用数字列表和算术运算获取目标数字"这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

0