题目:把一个数分解成任意几个数之和,把一个数的所有和式分解的结果全部输出出来,
例如:4的结果有,(1+3),(2+2),(1+1+2),(1+1+1+1)

由例子可见,该程序是去重的,应为1+1+2也可以写成1+2+1 ,所以,写方法必须要去重

package org.jeecg.modules.applet.controller;import java.util.*;/*** 把一个数分解成任意几个数之和,把一个数的所有和式分解的结果全部输出出来* 例如:4的结果有,(1+3),(2+2),(1+1+2),(1+1+1+1)*/
public class Composition extends ArrayList<Integer> {/***  重写equals方法方便去重,排除掉重复的数据* @param other* @return*/@Overridepublic boolean equals(Object other){Composition comp = (Composition)other;Collections.sort(this);Collections.sort(comp);if(this.isEmpty() || comp.isEmpty() || this.size() != comp.size())return false;for(int i=0; i<this.size(); i++)if(this.get(i) != comp.get(i))return false;return true;}@Overridepublic int hashCode() {return 0;}
}
class main {public static void main(String[] args) {int n=1;Scanner sc=new Scanner(System.in); //在控制台手动输入值  按enter键  便可得到结果n=sc.nextInt();System.out.println(toStr(calc(n)));}public static Set<Composition> calc(int n) {Set<Composition> devideSet = new HashSet<Composition>();Composition Composition = new Composition();switch (n) {//如果是1直接返回1case 1:Composition.add(1);devideSet.add(Composition);return devideSet;case 2://如果是2返回1+1Composition.add(1);Composition.add(1);devideSet.add(Composition);return devideSet;default:for (int i = 1; i <= n / 2; i++) {Composition = new Composition();Composition.add(i);Composition.add(n - i);devideSet.add(Composition);if (i <= n - i) {Set<Composition> partial_pos = calc(n - i);//递归调用for (Composition pos : partial_pos) { //当n==2时会走这个方法pos.add(i);devideSet.add(pos);}}}return devideSet;}}public static String toStr(Set<Composition> devideSet) {String str = "";for (Composition de : devideSet)str += toStr(de);return str;}public static String toStr(Composition Composition) {//将数字拼接成表达式String str = Composition.get(0) + "";for (int i = 1; i < Composition.size(); i++)str += (" + " + Composition.get(i));str += "\n";return str;}
}

把一个数分解成任意几个数之和,打印所有和式分解的结果相关推荐

  1. 把一个数分解成任意几个数的和,把所有的可能性列出来

    把一个数分解成任意几个数的和,把所有的可能性列出来 4=1+3 4=2+2 4=1+1+2 4=1+1+1+1 类似于有4个苹果放入n个篮子 通过创建二维数组将数字分别放进去 分别考虑 当都为一的情况 ...

  2. 把一个数分解成任意几个数之和全部结果

    package com.codser;import java.util.HashSet;public class App {/*** 临时的构建内部类*/static class Construct{ ...

  3. 把一个数分解成任意几个数的和,把所有的可能性列出来。

    在boss上面,一位大boss给我出的题目,自己没答出来,机会是留给有准备的人,看来不是给我准备着,虽然自己最近才刚刚学习了动态规划,但是能力还是差很多,下面进入正文. 这个问题我第一个想到的就是m个 ...

  4. 面试经典算法-将大于2的某一个数分解成两个素数之和

    将大于2的某一个数分解成两个素数之和 [面试题]输入一个大于2的偶数n,将n分解成为两个素数之和,有几对就输出几对.(注意 :1 不是素数) #include <stdio.h>/*子算法 ...

  5. 借用该函数验证哥德巴赫猜想:任意一个大的偶数都可以分解成两个素数之和。

    定义一个函数,实现判断某个整数是否是素数.借用该函数验证哥德巴赫猜想:任意一个大的偶数都可以分解成两个素数之和.从键盘输入一个偶数,输出该偶数的两个素数之和. 代码段: #include <io ...

  6. JS:利用函数,求任意三个数最大值,任意两个数的任意运算结果,判断任意数值是否为素数。

    1.求任意三个数最大值 <!DOCTYPE html> <html lang="en"> <head> <meta charset=&qu ...

  7. 华为机试——将一个数分解成两个质数之和

    题目描述 * 题目描述:数字分解,将一个数字分解成两个质数相加 * 输入描述:给定数字 * 输出描述:两个质数之和 * 输入示例:10 * 输出示例:10=3+7 代码实现 /************ ...

  8. 著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到: 1, 1, 2, 3, 5, 8, 13, 21, 34, ...

    def fib(max):n, a, b = 0, 0, 1while n < max:print(b)a, b = b, a + bn = n + 1return 'done' 注意,赋值语句 ...

  9. 哥德巴赫猜想:任意大于6的偶数都可以被分解成两个素数之和

    首先:两个素数只差一定为素数.根据这一个特性,我们可以从最小的素数开始验证.只要验证该素数与所给的数之差是素数,猜想得意验证.

最新文章

  1. 图像算法可以稳定处理视频了!港科大开源通用算法,解决视频处理时域不稳定问题|NeurIPS 2020...
  2. 使用MASM04 - Win32汇编语言012
  3. Asp.net 操作cookie大全
  4. 微软人工智能平台开源:利用《我的世界》测试AI软件
  5. 线性代数 第四章 向量组的线性相关性
  6. 360浏览器linux版本_360安全浏览器崩溃解决方案
  7. 【渝粤教育】国家开放大学2018年秋季 0033-21T工程数学 参考试题
  8. python安装wheel失败_Python安装Pyinstaller失败,Preparing wheel metadata ... error
  9. 为了能让你们用上flutter,我准备做几期视频教程
  10. 当你发现自己U盘里文件夹有了“.exe”后缀该怎么办
  11. 云从科技在科创板IPO注册获批,收入远高于格灵深瞳同期
  12. 9.支撑向量机SVM
  13. Mac 下撰写文档时输入 command、option、control 等键盘符号的方法
  14. matlab中complex,complex_-complex在C语言中是什么意思呀!
  15. 如何清除 浏览器-hao123的绑定
  16. rt-n18u usb3.0 linux ex,【晒一下论坛晒单奖品】华硕RT-N18U多功能无线路由器2.4G 600Mbps...
  17. 锁相环载波同步MATLAB实现,利用锁相环实现载波同步
  18. 双硬盘+win10+Ubuntu20.04双系统安装安装教程(UEFI)
  19. c语言中关键字的含义,c语言中的关键字有哪些?有什么含义?
  20. MAC 反编译安卓问题汇总

热门文章

  1. 报告解读下载 | 6月《中国数据库行业分析报告》重磅发布!精彩抢先看!
  2. sc_homework3
  3. Couldn‘t find device with uuid 恢复LVM元数据 linux
  4. Oracle 11g merge into log error及并行注意事项
  5. 计算机网络技术王协瑞第四版课后答案,最新计算机网络技术第三王协瑞第一到第八课后习题答案.docx...
  6. uniapp之生成海报收款码
  7. 如何为自定义相机添加 取景框|扫描框 |预览框|矩形框
  8. 零基础学习想考华为认证,要从何学起,需要什么资料?
  9. 华为折叠x2是鸿蒙系统吗,华为发布新一代折叠期间手机Mate X2,鸿蒙系统4月上线...
  10. Ubuntu 命令安装VSCode