c++ 整数n分成k份 递归实现
来源:互联网 发布:淘宝管家官方下载 编辑:程序博客网 时间:2024/05/17 02:22
最近学到了递归的用法,在课堂上感受到递归的魅力,课后做了这道练习,怎样把整数n分成k份,一开始,只是统计总情况数,后来改进下,顺便输出所有的情况。
写个博客,记录下。
//
// main.cpp
// 整数n分成k份
//
// Created by scnulpc on 2017/6/13.
// Copyright © 2017年 scnulpc. All rights reserved.
//
#include <iostream>
#include <stdio.h>
using namespace std;
#define Max 100
int parts;
//整数n分成k份,不考虑顺序,譬如把3分成2份,1 2 和 2 1 是同一种情况。 统计所有情况
int divideNtoKpart(int n,int k,int start)//n:整数,k:分成k份 start:从start开始分类
{
if (k==1) {
return 1;
}
int sum=0;
for (int i=start; i<=n/k; i++) {
sum = sum + divideNtoKpart(n-i, k-1, i);
}
return sum;
}
//统计情况并输出所有情况
int divideNtoKpartAndPrintAllConditions(int n,int k,int start,int condition[Max],int index)
{ //n:整数,k:分成k份 start:从start开始分类 数组condition[Max]:存储分类的情况 index:数组下标,从0开始
if (k==1) {
condition[index]=n;
for (int m=0; m<parts; m++) {
cout<<condition[m]<<" ";
}
cout<<endl;
return 1;
}
int sum=0;
for (int i = start; i<=n/k; i++) {
condition[index]=i;
sum = sum + divideNtoKpartAndPrintAllConditions(n-i, k-1, i, condition, index+1);
}
return sum;
}
int main(int argc, const char * argv[]) {
// insert code here...
int n=0,k=0;
int conditions[Max];
cout<<"输入整数n"<<endl;
cin>>n;
cout<<"输入份数k"<<endl;
cin>>k;
parts=k;
cout<<divideNtoKpartAndPrintAllConditions(n, k, 1, conditions, 0)<<"种"<<endl;
return 0;
}
- c++ 整数n分成k份 递归实现
- 整数N分成K份
- 将整数n分成k份
- ACM2 递归 n分成k份
- 【c语言】递归 实现n^k,求非负整数各位数字之和,逆置字符串
- 将整数n分成k份,且每份不能为空,任意两种分法不能相同(不考虑顺序)【划分问题】
- 整数划分n划分成不大于k的放法数
- 递归实现n^k
- 【C/C++】用递归实现n的k次方
- n个整数全排列的递归实现(C++)
- 【C语言】用递归函数实现n^k
- 【c语言】递归实现n的k次方
- 【C语言】实现n^k(递归函数)
- 【c语言】用递归函数实现n^k
- 【C语言】如何用递归的方法实现n^k
- C语言程序-用递归实现n^k
- [C]m*n矩阵划分成k*j等份
- 把mp3分成n份之后合并
- 机会总是留给有准备的人 —— 从裁缝到码农
- 互联网时代常用网站资源整理汇总(一直在完善中)
- js正则方法test与match简单介绍
- 深度学习(二十五)基于Mutil-Scale CNN的图片语义分割、法向量估计
- springMVC中的拦截器的使用
- c++ 整数n分成k份 递归实现
- Hive-数据文件分隔符为多字符问题
- shell变量详解
- lint/checkstyle/findbugs/pmd使用汇总
- 性能测试的目标
- 关于如何在github的README.md文件内添加图片的教程
- nginx设置反向代理后,页面上的js css文件无法加载
- POI操作Excel示例
- 成长——新的开始,一切都是美好的