• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >Golang > Golang算法问题之整数拆分实现方法分析

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

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了golang算法,golang,golang语言,golang教程,golang下载等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

本文实例讲述了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

代码实现:
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]
}</div>

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

</div>

您可能想查找下面的文章:

  • Golang算法问题之整数拆分实现方法分析
  • Golang算法问题之数组按指定规则排序的方法分析
  • Golang算法之田忌赛马问题实现方法分析
  • Golang排列组合算法问题之全排列实现方法
  • Golang正整数指定规则排序算法问题分析
  • Golang最大递减数算法问题分析

相关文章

  • linux中用shell快速安装配置Go语言的开发环境
  • Golang算法之田忌赛马问题实现方法分析
  • GO语言实现的端口扫描器分享
  • Go语言接口用法实例
  • Go语言声明一个多行字符串的变量
  • Go语言并发模型的2种编程方案
  • golang守护进程用法示例
  • GO语言基本数据类型总结
  • golang struct扩展函数参数命名警告解决方法
  • Golang中的sync.WaitGroup用法实例

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • Go语言扫描目录并获取相关信息的方法
    • go语言版的ip2long函数实例
    • GOLANG版的冒泡排序和快速排序分享
    • golang实现简单的udp协议服务端与客户端示例
    • go语言按显示长度截取字符串的方法
    • Go语言计算两个经度和纬度之间距离的方法
    • go语言实现一个简单的http客户端抓取远程url的方法
    • Go语言实现的一个简单Web服务器
    • 学习GO编程必备知识汇总
    • Go语言流程控制之goto语句与无限循环

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有