`

算法题_01

阅读更多

 

题目 
给一个参数n,求这个数的所有整数求和排列,不允许有重复
例如:
* n=10
* 1+2+3+4=10
* 1+2+7=10
* 1+3+6=10
* 1+4+5
* 1+9=10
* 2+3+5=10
* 2+8=10
* 3+7=10
* 4+6=10

 答案、效率不怎么好

 

package com;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class Arithmetic 
{
	@SuppressWarnings("unchecked")
	static List<List> list=new ArrayList<List>();  
	@SuppressWarnings("unchecked")
	public static void main(String [] args) throws Exception  
    {  
        int a=5;  
        List temp;  
        for(int i=1;i<a;i++)  
        {  
            temp=new ArrayList();  
            temp.add(i);  
            list.add(temp);  
            cal(a-i,temp);  
        }  
        //输出结果  
        for(int i=0;i<list.size();i++)  
        {  
            for(int j=0;j<list.get(i).size();j++)  
            {  
                System.out.print(list.get(i).get(j));  
                if(j!=list.get(i).size()-1)  
                    System.out.print("+");  
            }  
            System.out.println("="+a);  
        }  
          
    }  
   
    @SuppressWarnings("unchecked")
	public static void cal(int x,List<Integer> l)  
    {  
    	System.out.println("L=" + l);
        if(x==0){
    		return;  
    	}
        else if(x<0){
        	list.remove(l);return;
        }       
        for(int i=l.get(l.size()-1);i<=x;i++)  
        {  
            if(l.contains(i)){  
                continue;  
            }
            /**指定des1集合的长度(即L集合的长度)**/
            List des1=new ArrayList(Arrays.asList(new Object[l.size()])); 
            /**将L集合copy给desl集合**/
            Collections.copy(des1,l); 
            
            System.out.println("des1=" + des1);
            System.out.println("list=" + list);
            
            list.add(des1);          
            des1.add(i); 
            
            System.out.println("des1=" + des1);
            System.out.println("list=" + list);
            
            cal(x-i, des1);   
        }  
        System.out.println("list=" + list);
        System.out.println("L=" + l);
        
        list.remove(l);  
        
        System.out.println("list=" + list);
    }  
}

 

分享到:
评论

相关推荐

    model01_2020深圳杯_2020深圳杯c题_MATLAB;2020深圳杯c题_深圳杯2020c题_深圳杯.zip

    【标题】"model01_2020深圳杯_2020深圳杯c题_MATLAB" 和 【描述】中的 "2020深圳杯c题_深圳杯2020c题_深圳杯.zip" 提到的是一个与2020年深圳杯竞赛相关的MATLAB模型和C题目。深圳杯是一项重要的科技创新竞赛,它涵盖...

    model01_2020深圳杯_2020深圳杯c题_MATLAB;2020深圳杯c题_深圳杯2020c题_深圳杯_源码.zip

    该压缩包文件“model01_2020深圳杯_2020深圳杯c题_MATLAB;2020深圳杯c题_深圳杯2020c题_深圳杯_源码.zip”主要涉及到的是2020年深圳杯编程竞赛中的C题,而且解决方案是使用MATLAB编程语言完成的。MATLAB是一种广泛...

    model01_2020深圳杯_2020深圳杯c题_MATLAB;2020深圳杯c题_深圳杯2020c题_深圳杯

    【标题】"model01_2020深圳杯_2020深圳杯c题_MATLAB" 及其描述 "2020深圳杯c题代码,希望能够给大家带来一些帮助" 提到了2020年深圳杯竞赛的C题,并且提供了MATLAB语言编写的解决方案,文件名为"model01.m"。...

    数学建模-算法-汇总

    算法大全第01章__线性规划.pdf 算法大全第02章_整数规划.pdf 算法大全第03章-非线性规划.pdf 算法大全第04章__动态规划.pdf 算法大全第05章__图与网络.pdf 算法大全第06章_排队论.pdf 算法大全第07章_对策论.pdf ...

    数据结构与算法分析_Java语言描述(第2版)]

    Java语言描述(第2版)作者: 韦斯译者: 冯舜玺资源格式: PDF版本: 扫描版出版社: 机械工业出版社书号: ISBN:9787111231837发行时间: 2009年01月01日地区: 大陆语言: 简体中文简介: 内容简介《数据结构与算法分析:...

    南邮算法C课件

    4. 动态规划法:算法7_动态规划法.ppt涵盖了动态规划的核心思想和应用,如最长公共子序列、01背包问题等。 5. 分枝限界法:算法9_分枝限界法.ppt解释了如何通过广度优先搜索或深度优先搜索来寻找最优解,例如解决...

    攻防世界miss-01,杂项misc太湖杯

    5. 解决方案:最终如何成功解决问题,可能包括解密算法、触发漏洞的payload、修复代码的建议等。 6. 学习心得:作者从这个挑战中学到的知识点和经验总结,对于读者来说是宝贵的学习资源。 由于我们无法直接访问这个...

    数字信号处理_习题_北京交通大学

    2. 文件名不包含"ans"的PDF文件,如dsp试题L1_01.pdf,推测为习题集本身,可能包含选择题、填空题、解答题等多种题型,覆盖了数字信号处理的基本理论、算法及应用。 三、主要知识点 1. 信号与系统:线性时不变系统...

    FP_Growth算法案例讲解和演示

    FP_Growth算法是一种高效的数据挖掘方法,主要用于关联规则学习,特别是在大规模数据集上。这个算法以其高效率和节省内存的特点而被广泛应用于交易数据库中的频繁项集挖掘。在这个压缩包中,你将找到一系列资源来...

    JAVA经典算法50题.doc

    在给定的JAVA经典算法50题中,我们看到了几个典型的编程题目,涵盖了递归、素数判断和特定数字性质的检查。以下是这些程序的主要知识点: 1. **斐波那契数列**(Fibonacci Sequence): - 在程序1中,题目描述了一...

    比较经典的算法试题文件

    public class Lianxi01 { public static void main(String[] args) { System.out.println("1项: 1"); System.out.println("2项: 1"); int f1 = 1, f2 = 1, f, M = 24; for (int i = 3; i ; i++) { f = f2; f2...

    NOI.zip_NOI题库1.6答案_noi 1.6题库答案_noi.1.6_noi题库1.6_noi题库答案1.6

    4. 1.6.14.cpp:此题可能涉及到二分查找或者区间查询的问题,二分查找是一种高效的搜索算法,适用于有序数据,而区间查询则可能需要数据结构如线段树或平衡二叉搜索树的支持。 5. 1.6.6(2).cpp:此题可能是一个涉及...

    Java 算法与编程面试题

    【Java 算法与编程面试题】是针对求职者准备的一个重要环节,尤其是在IT行业中,熟练掌握算法和编程能力是必备技能。本题主要涵盖了两方面内容:身份证号码合法性验证以及两个文件中单词的交替合并。 首先,我们来...

    算法设计第一章习题解答

    《算法设计》是算法领域的一本经典教材,由Kleinberg和Tardos共同撰写。...而"chapter_01"这个文件很可能是第一章的所有习题及解答,读者可以从中获取详细解析,以便更好地理解和掌握算法设计的初步知识。

    CSP-J CSP-S 初赛模拟题_(C)-2021.09.01(H)--18页.pdf

    本资源汇总了多种初赛模拟题,包括2019年和2020年的试题,涵盖了编程、数据结构、算法等多个领域。 知识点二:评级分数线和模拟试题分析 本资源还提供了2019年和2020年的评级分数线,以及相关的模拟试题分析。这对...

    第十三届蓝桥杯大赛软件赛真题_CB.zip

    这个压缩包中的文件名多以数字结尾,可能是按照题目编号或顺序排列的,如 "CB_01.bmp" 可能代表第一道题目。 蓝桥杯大赛通常涵盖了多种编程语言和技术,包括但不限于C、C++、Java、Python等,参赛者需要在限定时间...

    基础算法 第4章 递归算法(C++版)-2022.01.27(C).pdf

    递归算法 递归算法是C++语言程序设计中的一种重要方法,它使许多复杂的问题变得简单,容易解决了。递归特点是:函数或过程调用它自己本身。其中直接调用自己称为直接递归,而将A调用B,B以调用A的递归叫做间接递归...

    蓝桥杯Java 算法模板题+真题训练

    【蓝桥杯Java算法模板题+真题训练】是一系列针对Java编程者设计的算法练习题目,涵盖了排序、动态规划、广度搜索、深度搜索、并查集等基础算法,旨在帮助参赛者提升算法能力,适应蓝桥杯比赛的要求。这些题目来源于...

Global site tag (gtag.js) - Google Analytics