Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int p (int n, int m)
- {
- if (n == m)
- return 1 + p(n, m - 1);
- if (m == 0 || n < 0)
- return 0;
- if (n == 0 || m == 1)
- return 1;
- return p(n, m - 1) + p(n - m, m);
- }
- p(n, m) - p(n, m - 1) = p(n-m, m) (1)
- / 0 (k>n)
- p(k,n)={ 1 (k=n)
- p(k+1,n)+p(k,n-k) (k<n)
- #include <stdio.h>
- /* 406 is the largest n for which p(n) fits in 64 bits */
- #define MAX 406
- long long int pArray[MAX][MAX];
- /* Emulate array starting at 1: */
- #define p(k,n) pArray[k-1][n-1]
- int main(int argc, char **argv) {
- int n, k;
- for (n = 1; n < MAX; n++) {
- for (k = n; k > 0; k--) {
- if (k > n) {
- p(k, n) = 0;
- }
- else if (k == n) {
- p(k, n) = 1;
- }
- else {
- p(k, n) = p(k, n-k)+p(k+1, n);
- }
- }
- }
- for (n = 1; n < MAX; n++) {
- printf("p(%d)=%lldn", n, p(1,n));
- }
- }
Add Comment
Please, Sign In to add comment