java求1至19这些自然数数中,所有相加为20的组合

简介: 使用Stack来完成: 代码如下: package ca.map;import java.util.Stack;public class Sum1_19eq20 { //算法: 求1至19这些自然数数中,所有相加为20的组合 public static void main(String[] args) { combinateDataOfRang

使用Stack来完成:

代码如下:

package ca.map;

import java.util.Stack;

public class Sum1_19eq20 {
    //算法: 求1至19这些自然数数中,所有相加为20的组合
    public static void main(String[] args) {
        combinateDataOfRange(1, 19, 20);
    }
    public static void combinateDataOfRange(int min,int max,int target){
        combinateData(0, min, max, target, new Stack<Integer>());
    }
    public static void combinateData(int sum,int min,int max,int target,Stack<Integer> stack){
        for(int i = stack.isEmpty() ? min : (Integer)stack.lastElement() + 1;i < max;++i){
            int tempSum = sum + i;
            stack.push(i);
            if(tempSum == target){
                System.out.println(stack+"="+target);
            }else{
                combinateData(tempSum, min, max, target, stack);
            }
            stack.pop();
        }
    }
}

输出为:

[1, 2, 3, 4, 10]=20
[1, 2, 3, 5, 9]=20
[1, 2, 3, 6, 8]=20
[1, 2, 3, 14]=20
[1, 2, 4, 5, 8]=20
[1, 2, 4, 6, 7]=20
[1, 2, 4, 13]=20
[1, 2, 5, 12]=20
[1, 2, 6, 11]=20
[1, 2, 7, 10]=20
[1, 2, 8, 9]=20
[1, 2, 17]=20
[1, 3, 4, 5, 7]=20
[1, 3, 4, 12]=20
[1, 3, 5, 11]=20
[1, 3, 6, 10]=20
[1, 3, 7, 9]=20
[1, 3, 16]=20
[1, 4, 5, 10]=20
[1, 4, 6, 9]=20
[1, 4, 7, 8]=20
[1, 4, 15]=20
[1, 5, 6, 8]=20
[1, 5, 14]=20
[1, 6, 13]=20
[1, 7, 12]=20
[1, 8, 11]=20
[1, 9, 10]=20
[2, 3, 4, 5, 6]=20
[2, 3, 4, 11]=20
[2, 3, 5, 10]=20
[2, 3, 6, 9]=20
[2, 3, 7, 8]=20
[2, 3, 15]=20
[2, 4, 5, 9]=20
[2, 4, 6, 8]=20
[2, 4, 14]=20
[2, 5, 6, 7]=20
[2, 5, 13]=20
[2, 6, 12]=20
[2, 7, 11]=20
[2, 8, 10]=20
[2, 18]=20
[3, 4, 5, 8]=20
[3, 4, 6, 7]=20
[3, 4, 13]=20
[3, 5, 12]=20
[3, 6, 11]=20
[3, 7, 10]=20
[3, 8, 9]=20
[3, 17]=20
[4, 5, 11]=20
[4, 6, 10]=20
[4, 7, 9]=20
[4, 16]=20
[5, 6, 9]=20
[5, 7, 8]=20
[5, 15]=20
[6, 14]=20
[7, 13]=20
[8, 12]=20
[9, 11]=20

目录
相关文章
|
设计模式 Java 程序员
面试官:Java 设计原则中,为什么反复强调组合要优先于继承?
面试官:Java 设计原则中,为什么反复强调组合要优先于继承?
1770 18
面试官:Java 设计原则中,为什么反复强调组合要优先于继承?
|
安全 Java
「Java并发编程实战」之对象的组合
本系列博客是对读《Java并发编程实战》的一点总结,读这本书感觉实在是太枯燥无味了,所以打算读完总结回顾下,对于想要快速了解本书内容的朋友,非常适合阅读此系列博客。
115 0
|
小程序 JavaScript Java
java商城源码(servlet,springboot,html,vue,uniapp,小程序,android)一套任意组合
java商城源码(servlet,springboot,html,vue,uniapp,小程序,android)一套任意组合,计算机毕业设计
315 0
|
Java
重新精读《Java 编程思想》系列之组合与继承
重新精读《Java 编程思想》系列之组合与继承
122 0
|
Java
Java - 两个类互相组合嵌套引用会爆炸吗?
Java - 两个类互相组合嵌套引用会爆炸吗?
143 0
|
Java
Java代码复用的三种常用方式:继承、组合和代理(2)
Java代码复用的三种常用方式:继承、组合和代理
221 0
|
Java 程序员
Java代码复用的三种常用方式:继承、组合和代理(1)
Java代码复用的三种常用方式:继承、组合和代理
375 0
|
Java 数据库连接 mybatis
Java -- SpringMVC+Mybatis+Mecached组合
Java -- SpringMVC+Mybatis+Mecached组合
120 0
|
Java 测试技术
Java特性组合的通用方案
Java特性组合的通用方案
227 0
Java CompletableFuture组合拼装异步线程任务(2)
Java CompletableFuture组合拼装异步线程任务 private void seq() throws ExecutionException, InterruptedException { System.
1153 0

热门文章

最新文章