HDU 1028 (dp)
2016-02-05 14:17
190 查看
Ignatius and the Princess III
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 16780 Accepted Submission(s): 11808
Problem Description
"Well, it seems the first problem is too easy. I will let you know how foolish you are later." feng5166 says.
"The second problem is, given an positive integer N, we define an equation like this:
N=a[1]+a[2]+a[3]+...+a[m];
a[i]>0,1<=m<=N;
My question is how many different equations you can find for a given N.
For example, assume N is 4, we can find:
4 = 4;
4 = 3 + 1;
4 = 2 + 2;
4 = 2 + 1 + 1;
4 = 1 + 1 + 1 + 1;
so the result is 5 when N is 4. Note that "4 = 3 + 1" and "4 = 1 + 3" is the same in this problem. Now, you do it!"
Input
The input contains several test cases. Each test case contains a positive integer N(1<=N<=120) which is mentioned above. The input is terminated by the end of file.
Output
For each test case, you have to output a line contains an integer P which indicate the different equations you have found.
Sample Input
4 10 20
Sample Output
5 42 627
首先给出一个递归函数fun(int n,int m);
n为需要划分的数,m为最大的加数,比如 4 = 1 + 1 + 1+1 n=4,m=4
1、当n > m的时候 就是上面所说的情况 fun(n,m) = fun(n,m-1)+fun(n-m,m)
fun(4,4) = fun(4,3)+fun(1,3)就是再递归去求n=4,m=3,
2、当 n == m 时.等于1+fun(n,m-1)
3、当 n < m 时,等于 fun(n,n)
说的不清,看下面的图
#include <iostream> #include <cstring> #include <cstdlib> #include <algorithm> using namespace std; int main() { int a[121][121],i,j,k,m,n,t; for(i=1;i<=120;i++) { a[i][1] = 1; a[1][i] = 1; } for(i=2;i<=120;i++) { for(j=2;j<=120;j++) { if(i > j) a[i][j] = a[i][j-1] + a[i-j][j]; else if(i == j) a[i][j] = a[i][j-1] + 1; else a[i][j] = a[i][i]; } } while(cin>>n) { cout<<a <<endl; } }
相关文章推荐
- poj1273 2010.2.17
- 固定导航(Sticky nav)
- C++暑期学习笔记
- 《HTTP权威指南》学习笔记——URL和资源
- Google protocol-buffers java版--简单使用
- iOS开发之苹果公司联系邮箱大全
- HDU 1018 big numbe
- 计算机网络的特点及性能
- win10、win7系统64位oracle11g安装教程以及32位plsql连接教程
- poj1221 2010.2.17
- 项目中遇到的问题
- 蓝桥杯学习记录-基础练习
- linux命令行下如何以目录树的形式显示一个文件夹的所有文件
- 通知:转移至简书
- PAT (Basic Level)1009. 说反话
- Angular-JS初见
- [转] AT指令(打电话与发短信)
- 计算机网络的类别
- Python错误: SyntaxError: Non-ASCII character
- uva1420