数字分解算法的优化
来源:互联网 发布:网络水军什么意思 编辑:程序博客网 时间:2024/04/29 21:52
http://bbs.csdn.net/topics/90040267
以上是讨论的论坛
下面是一个算法:
//数字为n,开始分解第k个数字 void decompose(int n,int k) { int i,j;//j用来表示数字是否分解完毕 for(j=n;j>=1;j--) { a[k]=j; if(j==n) { for(int temp=1;temp<=k;temp++) cout<<a[temp]<<" "; cout<<endl; } else decompose(n-j,k+1); } }
分解10的结果如下:
时间复杂度实在是有点高。
下面是改进的。
//n为带分解的数字,k为a的void findN(int n,int k){int j;if(n<=0)return;for(j=1;j<=n;j++){a[k]=j;if(a[k]<a[k-1])//分解出来的数字小于之前的数字时候,跳到下一个数字上 即执行j++continue;if(j==n){for(int temp=1;temp<=k;temp++)cout<<a[temp]<<" ";cout<<endl;}else{findN(n-j,k+1);}}}
可以看见时间从266降低到了12。
所以在递归中一定要加好条件,否则就会出现重复,时间复杂度也降不下来。
- 数字分解算法的优化
- 分解算法,将一个数字分解成最合适的数组内数字相加。
- 数字分解
- 分解数字
- 数字分解
- 分解数字
- 分解字母和数字的几个正则
- 关于数字的连续和分解
- Vampire Numbers 数字的合理分解
- 整数的质因数分解算法
- 整数的素数分解算法
- 分解质因素的算法
- 多目标进化优化的Tchebycheff分解方法
- 一个数字分解问题
- 笔试 数字分解
- 数字各位分解输出
- 数字分解成质因数
- 关于分解质因数的一个算法
- oracle 把一张表的数据放入另一张表
- 前端优化原则
- 12周支持课
- 调用函数printstars输出星号图
- VBSCRIPT小数、日期格式化
- 数字分解算法的优化
- Linux Top 命令解析 比较详细
- 利用函数求解分段函数的值
- 第十二周上机任务(输出星号二)
- 堆栈之直观体验(二)
- 调用函数输出型号图2
- 函数的声明
- 第十一周-大赛计分
- 开发出android应用开发的新天地走向另一片天空