• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Golang算法问题之整数拆分实现方法分析

    本文实例讲述了Golang算法问题之整数拆分实现方法。分享给大家供大家参考,具体如下:

    一个整数总可以拆分为2的幂的和,例如:

    7=1+2+4
    7=1+2+2+2
    7=1+1+1+4
    7=1+1+1+2+2
    7=1+1+1+1+1+2
    7=1+1+1+1+1+1+1

    总共有6种不同的拆分方式。

    再比如:4可以拆分成:4 = 4,4 = 1 + 1 + 1 + 1,4 = 2 + 2,4=1+1+2。

    用f(n)表示n的不同拆分的种数,例如f(7)=6.

    要求编写程序,读入n(不超过1000000),输出f(n)

    输入:一个整数N(1=N=1000000)。

    输出:f(n)

    输入数据如果超出范围,输出-1。

    样例输入:

    7

    样例输出:

    6

    代码实现:

    复制代码 代码如下:
    package huawei
    import (
        "fmt"
    )
    func Test08Base() {
        input := 1000000
        output := numberSplit(input)
        fmt.Println(output)
    }
    func numberSplit(n int) int {
        if n 1 || n > 1000000 {
            return -1
        }
        //1=1,1种拆分方式
        if n == 1 {
            return 1
        }
        //2=2,2=1+1,2种拆分方式
        if n == 2 {
            return 2
        }
        //n>=3
        //保存已经计算出来的数值
        data := make([]int, n+1)
        data[0] = 0 //该值无意义纯占位作用
        data[1] = 1
        data[2] = 2
        for i := 3; i = n; i++ {
            if i%2 == 0 {
                //偶数
                data[i] = data[i-2] + data[i/2]
            } else {
                //奇数
                data[i] = data[i-1]
            }
        }
        return data[n]
    }

    希望本文所述对大家Go语言程序设计有所帮助。

    您可能感兴趣的文章:
    • Golang排列组合算法问题之全排列实现方法
    • Golang算法问题之数组按指定规则排序的方法分析
    • Golang算法之田忌赛马问题实现方法分析
    • Golang最大递减数算法问题分析
    • Golang正整数指定规则排序算法问题分析
    • Go语言实现的树形结构数据比较算法实例
    • Go语言算法之寻找数组第二大元素的方法
    • go语言睡眠排序算法实例分析
    • GO语言利用K近邻算法实现小说鉴黄
    • golang实现分页算法实例代码
    上一篇:Golang算法问题之数组按指定规则排序的方法分析
    下一篇:Go语言展现快速排序算法全过程的思路及代码示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Golang算法问题之整数拆分实现方法分析 Golang,算法,问题,之,整数,