zoukankan      html  css  js  c++  java
  • 如何在一个数组中求出任意几个数的和等于给定数

    代码:

    import java.util.*;
     
    public class Organize1 {
        static int[] iArray = {0, 2, 3, 1, 4, 10, 23, 7, 8, 9, 6, 3};
        static ArrayList<String> list = new ArrayList<String>();
        static Set<String> index = new TreeSet<String>();
        static StringBuilder str;
        static StringBuilder indexStr;
        static int sum;
         
        public static void org(int[] iArray, int start){
            for(int i=0; i<iArray.length; i++){
                sum = iArray[i];
                str = new StringBuilder();
                str.append(iArray[i]);
                indexStr = new StringBuilder();
                indexStr.append(i);
     
                for(int j=start; j<iArray.length; j++){                                   
                    if(i != j){
                        sum += iArray[j];
                         
                        if(sum == 10){
                            str.append("+"+ iArray[j]);
                            indexStr.append("+"+ j);
                            int size = index.size();
                            index.add(indexStr.toString());
                             
                            if(index.size() > size)
                                list.add(str.toString());                           
                        }
                        if(sum < 10){
                            str.append("+"+ iArray[j]);
                            indexStr.append("+"+ j);
                        }
                        if(sum > 10){                       
                            sum -= iArray[j];                           
                        }
                    }
                }
            }
        }
         
        public static void main(String args[]){   
            for (int i=0; i<iArray.length; i++)
                org(iArray, i);
            System.out.println(list.toString());
        }
    }

     结果

    [0+2+3+1+4, 2+0+3+1+4, 3+0+2+1+4, 1+0+2+3+4, 4+0+2+3+1, 10+0, 7+0+2+1, 8+0+2, 9+0+1, 2+3+1+4, 3+2+1+4, 1+2+3+4, 4+2+3+1, 7+2+1, 8+2, 9+1, 7+3, 6+3+1, 2+1+4+3, 6+1+3, 0+4+6, 3+4+3, 4+6, 7+3, 6+4, 0+10, 3+7, 3+7, 0+7+3, 2+8, 1+9, 1+6+3]
  • 相关阅读:
    C# 图片与Base64的相互转化
    LeetCode 303. Range Sum Query – Immutable
    LeetCode 300. Longest Increasing Subsequence
    LeetCode 292. Nim Game
    LeetCode 283. Move Zeroes
    LeetCode 279. Perfect Squares
    LeetCode 268. Missing Number
    LeetCode 264. Ugly Number II
    LeetCode 258. Add Digits
    LeetCode 257. Binary Tree Paths
  • 原文地址:https://www.cnblogs.com/luoruiyuan/p/9132024.html
Copyright © 2011-2022 走看看