Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3533681
  • 博文数量: 864
  • 博客积分: 14125
  • 博客等级: 上将
  • 技术积分: 10634
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-27 16:53
个人简介

https://github.com/zytc2009/BigTeam_learning

文章分类

全部博文(864)

文章存档

2023年(1)

2021年(1)

2019年(3)

2018年(1)

2017年(10)

2015年(3)

2014年(8)

2013年(3)

2012年(69)

2011年(103)

2010年(357)

2009年(283)

2008年(22)

分类: Java

2017-09-30 10:29:40

 遇到个问题:数组里任意个数数字相加等于一固定数值
于是自己用java实现了,欢迎大家提出更好的方法

public class SumTest {
    static final int SUM = 20;
    
    public static void getSum(int data[], List list, int pos){      
        if(pos >= data.length){
            return;
        }
        //System.out.println("getSum:" + pos);
        list.add(pos);
        int sum=0;
        for (Integer integer : list) {
            sum += data[integer];
        }
        if(sum             getSum(data, list, pos+1);
        }else{
            int npos;
            if(sum==SUM){
                StringBuilder builder = new StringBuilder();
                for (Integer integer : list) {
                    builder.append(data[integer]+",");
                }
               System.out.println("find:"+builder.toString());
                npos = list.remove(list.size()-1);
                if(list.size()==0){
                    npos++;
                }
            }else{
                npos = list.remove(list.size()-1);
                if(list.size()==0){
                    npos++;
                }else{
                    npos = list.remove(list.size()-1);
                }
            }
            getSum(data, list, npos+1);
        }  
    }  
    
    public static void main(String[] args) {
         int data[] = new int[20];
         for(int i=0; i              data[i]=i+1;
         }
         List list = new ArrayList();
         getSum(data,list, 0);
    }
}
阅读(8903) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~