精华内容
下载资源
问答
  • Java 将一个数拆分成任意几个数的和

    万次阅读 2019-08-02 22:33:01
    Java 将一个数拆分成任意几个数的和(以下代码可否有优化之处求教) package top.smartprinting; import java.util.Random; /** * @author Chief * @date 2019-07-20 16:08 * @Email MyEvery7655@gmail.com */...

    Java 将一个数拆分成任意几个数的和(以下代码可否有优化之处求教)

    package top.smartprinting;
    
    import java.util.Random;
    
    /**
     * @author Chief
     * @date 2019-07-20 16:08
     * @Email MyEvery7655@gmail.com
     */
    public class Algorithm {
    
        public static void main(String[] args) {
            //第一种:传统的方式
            dividingLine("第一种");
            splitInto(20, 21);
    
            //第二种:使用数组寄存分解后的数字
            dividingLine("第二种");
            int[] numberOfSplitsArrays = splitInto(20, new int[22]);
            //遍历数组
            traversing(numberOfSplitsArrays);
            //求数组所有元素的和
            summation(numberOfSplitsArrays);
        }
    
        /**
         * 将一个数拆分成任意几个数的和
         *
         * @param number         将要被拆分的数
         * @param numberOfSplits 将要被拆分成的数量
         */
        private static void splitInto(int number, int numberOfSplits) {
            Random random = new Random();
            int rawData = number;
            int temp = 0;
            for (int i = 0; i < numberOfSplits - 1; i++) {
                if (number > 1) {
                    int j = random.nextInt(number - 1) + 1;
                    number -= j;
                    temp += j;
                    System.out.println(j);
                } else if (temp + 1 == rawData) {
                    System.out.println(number);
                    for (int j = 1; j < numberOfSplits - i; j++) {
                        System.out.println(0);
                    }
                    break;
                }
            }
        }
    
        /**
         * 将一个数拆分成任意几个数的和
         *
         * @param number         将要被拆分的数
         * @param numberOfSplits 将要被拆分成的数量的数组
         * @return 返回一个数组
         */
        private static int[] splitInto(int number, int[] numberOfSplits) {
            Random random = new Random();
            for (int i = 1; i < numberOfSplits.length; i++) {
                if (number > 1) {
                    int j = random.nextInt(number - 1) + 1;
                    number -= j;
                    numberOfSplits[i] = j;
                } else if (number == 1) {
                    numberOfSplits[i + 1] = number;
                    break;
                }
            }
            return numberOfSplits;
        }
    
        /**
         * 遍历数组的结果
         *
         * @param numberOfSplits 被拆分的数字的数组
         */
        private static void traversing(int[] numberOfSplits) {
            System.out.println("遍历数组的结果");
            for (int i : numberOfSplits) {
                System.out.println(i);
            }
        }
    
        /**
         * 求数组所有元素的和【用于验证上面第二种方式的正确性】
         *
         * @param numberOfSplits 被拆分的数字的数组
         */
        private static void summation(int[] numberOfSplits) {
            int temp = 0;
            for (int i : numberOfSplits) {
                temp += i;
            }
            System.out.println("\n校验求取数组的所有元素的和为:" + temp);
        }
    
    
        private static void dividingLine(String no) {
            System.out.println("\n####################### " + no + " #######################");
        }
    
    }
    
    展开全文
  • #coding=utf-8 import pdb def split_int( num ):  #pdb.set_trace()  if num &lt; 2:  result = 0  elif num == 2:  result == 1  elif num == 3:  result == 2  else:  ...

    #coding=utf-8
    import pdb
    def split_int( num ):
        #pdb.set_trace()
        if num < 2:
            result = 0
        elif num == 2:
            result == 1
        elif num == 3:
            result == 2
        else:
            dp = []
            dp.append(1)
            dp.append(2)
            dp.append(3)
            for i in range(2, num):
                current_max = -1
                for j in range(i//2):
                    if dp[j] * dp[i - j] > current_max:
                        current_max = dp[j] * dp[i - j]
                dp.append(current_max)
            result = dp[-1]
        return result
    if __name__ == "__main__":
        print (split_int(int(input())))
     

    展开全文
  • package com.codser; import java.util.HashSet; public class App { /** * 临时的构建内部类 */ static class Construct{ int left; // 的第一个数 eg:5 left=1,right=4 int right; //...
    package com.codser;
    
    
    import java.util.HashSet;
    
    public class App
    {
        /**
         * 临时的构建内部类
         */
        static class Construct{
            int left; // 拆的第一个数  eg:拆5 left=1,right=4
            int right; // 与拆的第一个数互补的数
            String complement; // 补充1的片段
            public Construct(int left,int right,String complement){
                this.left=left;
                this.right=right;
                this.complement=complement;
            }
            public int getLeft() {
                return left;
            }
    
            public void setLeft(int left) {
                this.left = left;
            }
    
            public int getRight() {
                return right;
            }
    
            public void setRight(int right) {
                this.right = right;
            }
    
            public String getComplement() {
                return complement;
            }
    
            public void setComplement(String complement) {
                this.complement = complement;
            }
    
            @Override
            public String toString() {
                return "Construct{" +
                        "left=" + left +
                        ", right=" + right +
                        ", complement='" + complement + '\'' +
                        '}';
            }
        }
        public static void main( String[] args )
        {
            // 要拆的数
            int num=5;
            // 拆的临时数组
            Construct[][] tempConstruct=new Construct[num+1][];
            // 构建的结果
            HashSet<String>res=new HashSet<String>();
            // 将不用的置空
            tempConstruct[0]=null;
            tempConstruct[1]=null;
            // 按需构建二维数组并填充拆开的数据
           for(int i=2;i<=num;i++){
               tempConstruct[i]=new Construct[i-1];
               int index=0;
                for(int j=1;j<i;j++){
                    StringBuilder str=new StringBuilder();
                    for(int z=0;z<(num-i);z++){
                        str.append("1+");
                    }
                    // 去掉末尾的加号并添加到构建对象中
                    tempConstruct[i][index++]=new App.Construct(j,i-j,str.length()>0?str.toString().substring(0,str.length()-1):str.toString());
                }
           }
           // 构建结果
            for(int i=2;i<=num;i++){
                for(int j=0;j<tempConstruct[i].length;j++){
                    Construct construct=tempConstruct[i][j];
                    if(construct.getComplement().equals("")){
                        res.add(construct.getLeft()+"+"+construct.getRight());
                        res.add(construct.getRight()+"+"+construct.getLeft());
                    }else{
                        res.add(construct.getLeft()+"+"+construct.getRight()+"+"+construct.getComplement());
                        res.add(construct.getComplement()+"+"+construct.getLeft()+"+"+construct.getRight());
                        res.add(construct.getRight()+"+"+construct.getComplement()+"+"+construct.getLeft());
                    }
                }
            }
            // 打印结果
            System.out.println(num+"所拆的个数:"+res.size());
            for (String string : res) {
                System.out.println(num+"="+string);
            }
    
        }
    
    
    }
    
    
    

    展开全文
  • 把一个数拆分成几个连续整数的和,各种情况都列出来,我自己测试过了,速度绝对让你满意
  • #实现将一个数拆几个素数的积 number = int(input()) while number != 1: for n in range(1,number+1): w = 0 number_one = 0 for i in range(1,n):#挑选出为素数的n值 if(n%i==0): w+=1 if w==1: ...
    #实现将一个数拆成几个素数的积
    
    number = int(input())
    while number != 1:
        for n in range(1,number+1):
            w = 0
            number_one = 0
            for i in range(1,n):#挑选出为素数的n值
                if(n%i==0):
                    w+=1
            if w==1:
                number_one = number%n
                if number_one == 0:
                    print(n)
                    number = number//n
    

    运行程序,可得到输出结果。

    展开全文
  • java 代码 package org.feng.num; import java.util.*; /** * Created by Feng on 2020/1/7 9:... * 将一个数分解成任意几个数之和; * 将所有结果输出出来; * 例如:4的结果有(1+3),(2+2),(1+1+2),(1+1+1+1) ...
  • 把一个数分解成任意几个数的和,所有的可能性列出来
  • 题目:给定一个自然数,如何将它拆分成几个连续的自然数的和的形式,例如:9 = 4 + 5,12 = 3 + 4 + 5等,有哪些不能分解成这样的形式,例如4,8等 分析:通过上面的几个例子可以发现一下规律: 1)所有的...
  • 假设我们这里有个正整数18,这里需要18拆分成1 2 3 5 10的组合,那么输出的结果应该是: ==> 10+5+3 eg:->79 ----->7*10+5+3+1 大数优先 类似这样的效果,这里写了一个简单的算法来实现 SModel.h #import ...
  • 把一个数分解成任意几个数之和”,请通过编写代码(语言不限),试着把一个数的所有和式分解的结果全部输出来, 例如:4的结果有(1+3),(2+2),(1+1+2),(1+1+1+1) 我先啰嗦两句 ,首先这道题是典型的递归...
  • 、100个数随机分成10份: 说明: 1、此算法$money_total值可大于$personal_num也可以小于$personal_num; 2、得出来的结果是保留两位小数点; 3、相加和等于100;可用于发红包,精准到小数; 4、值类型结果是...
  • 如何实现整数分为几个数的和,可以理解为一个整数的分箱问题 简单叙述解题思路: 比如:4这个整数,最多分为4个箱(1,1,1,1);最少一个箱(4) 所以我们定义一个长度为四的数组,每个数组最大能取到4(所以想到5进制...
  • package Chap2; import java.util.Collections; import java.util.ArrayList; public class Tencent { public static void Shu(int N,int k) { ArrayList<Integer> shu=new ArrayList<... shu....
  • 把一个List拆分为几个大小一样的List

    万次阅读 2013-06-21 14:47:06
    //获取被拆分的数组个数 int arrSize = targe.size()%size==0?targe.size()/size:targe.size()/size+1; for(int i=0;i;i++) { List<String> sub = new ArrayList(); //指定索引数据放入到list中 ...
  • * 把一个正整数分解为任意几个数之和 */ public class NiceCode{ private static int nextInt; public static void main(String[] args) { System.out.println("请输入一个正整数: "); Scanner scanner = new ...
  • 把一个数分解成任意几个数的和,所有的可能性列出来 4=1+3 4=2+2 4=1+1+2 4=1+1+1+1 类似于有4个苹果放入n个篮子 通过创建二维数组将数字分别放进去 分别考虑 当都为一的情况 在考虑至少有有两个的情况 public ...
  • 题目:将一个数分成几个不同的之和,满足这些的乘积最大。  刚开始,没有看清“不同”两个字,发现一个数分成两个的两个积满足最大,则两个的差一定要最小。即有两种情况:  (1)奇数(2*n+1):则可以...
  • 小白记录,大佬勿喷!! /**分析 2 1+1; 3 1+2,1+1+1 4 1+3,2+2,1+1+2,1+1+1...定义一个外部变量(用来记录递归的次数) * 2.定义一个静态方法,进行调用 * 3.两种情况分别为a为奇数和偶数的情况 * (1)a为偶
  • 转自:http://blog.csdn.net/tengdazhang770960436/article/details/9145405 public static List> createList(List targe,int size) { List> listArr = new ArrayList>(); //获取被拆分的数组个数
  • VBA代码把一个多页的word拆分成任意页数的多个文档,可直接粘贴运行。
  • 前言step 1 进入excel vba编程界面step 2 粘贴代码step 3 运行代码step 4 删除宏代码 前言 这两天接触到excel比较多,才发现...如果我们要表按照班级拆分为三表,可能一般我们都是通过筛选后复制粘贴。但这...
  • 试着把一个数的所有和式分解的结果全部输出出来: q(n,m)表示整数n用不大于m的因数划分 例如:q(4,3)的结果有:(1+3),(2+2),(1+1+2),(1+1+1+1) 首先需要明确算法思路: 代码实现 运行结果 ...
  • Java把一个大的文本文件拆分成几个小的文件  一、背景  本地调用线上服务运行了一个程序,运行完成后,日志文件644MB,由于日志中没有统计数据的代码,所以想用日志文件统计一个运行的结果。但是发现:用Notepad...
  • 这个问题我第一个想到的就是m个苹果放入n个篮子,苹果和篮子都一样,篮子不能为空。 这就和走棋盘问题和杨辉三角类似咯。 算法一:求解出一共有多少种可能性: 解法1: public static void main(Str...
  • 把一个数随机分成n份,随机数字和等于总数 PHP代码 例如:100随机分成5份,5个数字的和等于100; 一、100个随机分成10份: 说明: 1、此算法money_total值可大于 personal_num 也可以小于personal_num; 2...
  • 如何将列表里面的数字,合并成一个数字: 使用reduce(function,list) from functools import reduce x = [1,2,3,4,5] combine = reduce((lambda x,y :...如何将一个数字, 拆分为单个数字的列表: 使用map(function...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 150,511
精华内容 60,204
关键字:

把一个数拆分成几个数