递归-OpenJudge-7215:简单整数划分
来源:互联网 发布:java完整项目案例 编辑:程序博客网 时间:2024/05/25 18:12
简单的整数划分问题
总时间限制: 100ms 内存限制: 65536kB
- 描述
将正整数n 表示成一系列正整数之和,n=n1+n2+…+nk, 其中n1>=n2>=…>=nk>=1 ,k>=1 。
正整数n 的这种表示称为正整数n 的划分。正整数n 的不同的划分个数称为正整数n 的划分数。- 输入
- 标准的输入包含若干组测试数据。每组测试数据是一个整数N(0 < N <= 50)。
- 输出
- 对于每组测试数据,输出N的划分数。
- 样例输入
5
- 样例输出
7
- 提示
5, 4+1, 3+2, 3+1+1, 2+2+1, 2+1+1+1, 1+1+1+1+1
解题方法:
1、阅读题意后,我们可以发现这明显是一道递归问题。那么解决这道题的关键是什么?
·按照提示保证在前面的数比它后面的数都大,避免发生像2+3;3+2;这样的重复计算。如此我们应该使用if语句进行判断。
#include<iostream>#include<cstdio>using namespace std;int ways = 1;void way(int nums[],int n, int i){int num[50];for(int k = 0; k < 50; k++){num[k] = nums[k];}num[n]--;num[i]++;if(num[n]<=0){return;}else{int temp = 1;for(int j = 0; j < i; j++){if(num[j] < num[j+1]){temp = 0;break;}}if(temp == 1){ways++;}way(num,n,i);way(num,i,i+1);}}int main(){int T;cin >> T;while(T--){int nums[50] = {0};cin >> nums[0];way(nums,0,1);cout << ways << endl;ways = 1;}return 0;}
阅读全文
0 0
- 递归-OpenJudge-7215:简单整数划分
- OpenJudge 简单的整数划分问题(递归)
- OpenJudge 7215简单的整数划分问题
- OpenJudge 简单的整数划分
- openjudge 简单的整数划分问题
- openjudge 简单的整数划分问题
- 整数划分(递归)
- 整数划分《递归法》
- 递归实现整数划分
- 递归之整数划分
- 递归算法---整数划分
- 整数划分(递归)
- 递归--整数划分问题
- 递归-整数划分问题
- 递归-整数划分问题
- 递归算法-->整数划分
- 递归之整数划分
- 递归算法---整数划分
- RSA实现加密算法
- 51nod 1090 3个数和为0
- 10.4 博客
- 备考OCJP认证知识点总结(五)
- 如何显示二进制文件中的内容
- 递归-OpenJudge-7215:简单整数划分
- 从NTP服务器获取时间(C#)
- IIS下开启php扩展失效?
- 解决request中文乱码
- Java虚拟机:类加载
- mysql数据库初次登录时无法登录问题以及修改密码的问题
- python学习笔记--推导式(Comprehension)
- poj1251 Jungle Roads
- linux增加新的磁盘空间 采用lvm方式