整数划分
来源:互联网 发布:网络协议大全 编辑:程序博客网 时间:2024/05/16 15:49
#include<iostream>using namespace std;int divide(int n,int m){ if(n<1||m<1){ cout<<" data error"<<endl; } else if(n==1||m==1){ return 1; } else if(n==m){ return (1+divide(n,n-1)); } else if(n<m){ return (divide(n,n)); } else return(divide(n,m-1)+divide(n-m,m));}int main(){ int n; cin>>n; cout<< divide(n,n);}
解释:4分成4,3+1,2+2,2+1+1,1+1+1+1,一共5中
用递归的方法实现,求得总数,
0和负数不需要划分,所以当m和n小于1的时候报dataerror
如果m是1,说明分到了1+1+1+1...+1这种情况,这种情况只有1种所以return1
如果n是1,就只有1这一种
n=m的情况是分包含n和不包含n,包含就是只有一种,分4的话就是4,分5的话就是5
不包含n就是比n小1的所有划分,就是
用4为例走一遍,从main开始,divide(4,4)先走m=n那一步,结果是1+divide(4,3),4比3大,走最后一个else,就是divide(4,2)+divide(3,3),
然后是divide(4,1)+divide(3,2)+divide(3,2)+divide(2,3),2<3所以是divide(2,2),就是divide(4,1)+divide(3,2)+divide(3,2)+divide(2,2),
divide(2,2)->1+divide(2,1)
divide(2,1)->divide(1,1)
我自己懵了,我也不知道咋回事了,,。
阅读全文
0 0
- 整数划分
- 整数划分
- 整数划分
- 整数划分
- 整数划分
- 整数划分
- 整数划分
- 整数划分
- 整数划分
- 整数划分
- 整数划分
- 整数划分
- 整数划分
- 整数划分
- 整数划分:
- 整数划分
- 整数划分
- 整数划分
- [POJ 3259] Wormholes 最短路判负环(SPFA版)
- linux redhat6.5上安装jdk1.7及环境变量的配置
- 神经网络结构
- Linux常用指令大全
- PHP Laravel 取上一篇文章和下一篇文章
- 整数划分
- Hive与HBase的整合
- redis集群搭建
- 自定义HID协议、应用说明
- java相关概念
- Ajax
- eclipse如何消除error pages的错误
- NSURLProtocol实现对WKWebView加载的网页的数据缓存
- 比特币开发专题(为什么比特币和人民币可以等值兑换)