拆分自然数的几种算法

【问题描述】

自然数的拆分:

任何一个大于

1

的自然数

N

总可以拆分成若干个自然数之和,

并且有多种拆分方法。例如自然数

5

,可以有如下一些拆分方法:

【问题描述】

自然数的拆分:

任何一个大于

1

的自然数

N

总可以拆分成若干个自然数之和,

并且有多种拆分方法。例如自然数

5

,可以有如下一些拆分方法:

5=1+1+1+1+1

5=1+1+1+2

5=1+2+2

5=1+4

5=2+3

算法一

用回溯法来实现

针对所给问题,定义问题的解空间;如本题对

5

的拆分来说,

1<=

拆分的数

<=5

确定易

于搜索的解空间结构;如本题对

5

的拆分来说,用

x[]

数组来存储解,每个数组元素的取值

范围都是

1<=

拆分的数

<=5

,从

1

开始搜索直到

5

搜索解空间,并在搜索过程中用剪枝函

数避免无效搜索。

如本题对

5

的拆分来说,

为了避免重复,

x>=x[j](i>j)

x[]={2,3}

满足条

件而

x[]={3,2}

就不满足条件不是可行解即无效。

#include

#include

void

splitN(

int

n,

int

m);

//

n

是需要拆分的数,

m

是拆分的进度。

int

x[1024]={0},total=0 ;

//

total

用于计数拆分的方法数,

x[]

用于存储解

void

main()

{

int

n ;

printf(

"please input the natural number n:"

);

scanf(

"%d"

,&n);

splitN(n,1);

printf(

"There are %d ways to split natural number %d. "

,total,n);

}

void

splitN(

int

n,

int

m)

{

//n

是需要拆分的数,

m

是拆分的进度

int

rest,i,j;

for

(i=1;i<=n;i++)

{

//

1

开始尝试拆分

if

(i>=x[m-1])

{

//

拆分的数大于或等于前一个从而保证不重复

x[m]=i ;

//

将这个数计入结果中

rest=n-i

;

//

剩下的数是

n-i

,如果已经没有剩下的了,并且进度

(

总的拆分个数

)

大于

数字拆分问题算法回溯_拆分自然数的几种算法相关推荐

  1. rrt算法流程图_基于RRT的运动规划算法综述

    基于 RRT 的运动规划算法综述 1. 介绍 在过去的十多年中, 机器人的运动规划问题已经收到了大量的关注, 因为机器人开始成 为现代工业和日常生活的重要组成部分. 最早的运动规划的问题只是考虑如何移 ...

  2. 机器学习算法 拟合曲线_制定学习曲线以检测机器学习算法中的错误

    机器学习算法 拟合曲线 机器学习 (Machine Learning) The learning curve is very useful to determine how to improve th ...

  3. 聚类算法 距离矩阵_论文阅读9——AP聚类算法

    Affinity Learning for Mixed Data Clustering 论文提出了基于混合对数据进行聚类的学习框架,具体研究内容包括:1)如何处理具有混合类型属性的数据.2)如何学习数 ...

  4. otsu阈值分割算法原理_大津二值化算法OTSU的理解

    otsu 大津算法介绍: OTSU算法是由日本学者OTSU于1979年提出的一种对图像进行二值化的高效算法. 利用阈值将原图像分成前景,背景两个图象. 前景:用n1,csum,m1来表示在当前阈值下的 ...

  5. 3算法全称_全网最通俗的KMP算法图解

    导语 本篇内容研究字符串匹配问题,首先介绍字符串匹配问题,引出Brute-Force算法及其优化方法,最后深入详解KMP算法.文章结构如下(全文阅读需要30分钟左右): 字符串匹配问题 1字符串匹配问 ...

  6. fp算法例题_机器学习(九)—FP-growth算法

    本来老师是想让我学Hadoop的,也装了Ubuntu,配置了Hadoop,一时间却不知从何学起,加之自己还是想先看点自己喜欢的算法,学习Hadoop也就暂且搁置了,不过还是想问一下园子里的朋友有什么学 ...

  7. python路径规划算法可视化_路径规划问题:DIJKSTRA算法 以及Python实现

    一. DJKSTRA算法概述 我们可以将地图抽象为Graph的数据结构,然后利用Graph的广度优先遍历算法(Breadth-First Search, BFS)解决无权重的High-Level的地图 ...

  8. 三维图形几何变换算法实验_基于深度学习的三维重建算法综述

    点击上方"计算机视觉life",选择"星标" 快速获得最新干货 00 前言 目前,三维重建技术已在游戏.电影.测绘.定位.导航.自动驾驶.VR/AR.工业制造以 ...

  9. 遗传算法是一种进化算法_我是如何设计一种算法的,该算法混合了到您镇上的乐队的播放列表...

    遗传算法是一种进化算法 by Sina Habibian 通过新浪Habibian 我是如何设计一种算法的,该算法混合了到您镇上的乐队的播放列表 (How I designed an algorith ...

最新文章

  1. python递归算法 电影院票价问题_算法课堂实验报告(二)——python递归和分治(第k小的数,大数乘法问题)...
  2. @Quelifier的用法,
  3. Java注解Annotation详解
  4. python遍历字典方法总结
  5. tomcat端口冲突解决 Address already in use: JVM_Bind :8080
  6. C# Socket服务器及多客户端连接应用例程
  7. 0-1背包问题(物品不可分割)
  8. BigDecimal 运用示例 与 DecimalFormat
  9. 单片机定时器实验两位倒计时秒表_51单片机基础与应用8天速成(三)
  10. Android数据存储——内部存储
  11. C# 特性(Attribute)学习
  12. Leetcode 946.验证栈序列
  13. iOS 创建单例的方法
  14. 《移动App测试的22条军规》—App测试综合案例分析23.5节测试微信App的用户体验...
  15. Bootstrap基础九辅助类
  16. python将数据写入txt文本文件
  17. hadoop 下载慢的解决方案
  18. oracle里每年第一天,SQL和Oracle获取每周、每月、每年第一天和最后一天
  19. 对象存储界的“百变星君”来了,非结构化数据存储还是事儿吗?
  20. 今日头条笔试之字母交换

热门文章

  1. JavaScript字符串大小写转换
  2. 10倍效率提升的低代码IDE
  3. Uipath 处理excel转PDF或者合并PDF(excel to pdf, join pdf files)
  4. 6.4.1.4.1 General
  5. Nand Flash驱动, ECC, MTD, FTL, 文件系统
  6. Freeswitch+Sip.js 早期媒体(回铃音)
  7. css 蒙版效果_CSS蒙版的过渡效果
  8. 像企业账号一样分发安装应用
  9. 为什么 TCP 三次握手期间,客户端和服务端的初始化序列号要求不一样?
  10. 如何搭建一个属于自己的网站(使用宝塔面板)