源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2022-05-04 12:34 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要: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 代码实现:
[u]复制代码[/u] 代码如下:
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语言程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部