无线深度探索求和(根据结果用给出的数字组合求和)

来源:互联网 发布:html商城源码下载 编辑:程序博客网 时间:2024/06/06 17:18
import java.math.BigDecimal;import java.util.ArrayList;import java.util.List;public class Fff {public void calculate(List<BigDecimal> lis_obj, BigDecimal result) {List<String> bb = new ArrayList<String>();for (int i = 0; i < lis_obj.size(); i++) {for (int j = i + 1; j < lis_obj.size(); j++) {BigDecimal tmp = new BigDecimal("0.0");tmp = lis_obj.get(i).add(lis_obj.get(j));if (tmp == result) {System.out.println(lis_obj.get(i).toString() + "-"+ lis_obj.get(j).toString());break;} else {bb.add(lis_obj.get(i).toString());bb.add(lis_obj.get(j).toString());dealData(tmp, j + 1, lis_obj.size(), lis_obj, result, bb);bb.clear();}}}}public static void dealData(BigDecimal tmp, int k, int length,List<BigDecimal> lis_obj, BigDecimal result, List<String> bb) {BigDecimal tmp_add = new BigDecimal("0.0");if (k < length) {for (int m = k; m < length; m++) {tmp_add = new BigDecimal("0.0");tmp_add = tmp.add(lis_obj.get(m));if (tmp_add.toString().equals(result.toString())) {StringBuffer sb_obj = new StringBuffer();for (int i = 0; i < bb.size(); i++) {sb_obj.append(bb.get(i));sb_obj.append("-");}sb_obj.append(lis_obj.get(m));System.out.println(sb_obj.toString());} else {continue;}}tmp_add = tmp.add(lis_obj.get(k));bb.add(lis_obj.get(k).toString());if (k < length) {dealData(tmp_add, k + 1, length, lis_obj, result, bb);}}}}

1 0