Guest User

Untitled

a guest
Nov 21st, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. int p (int n, int m)
  2. {
  3. if (n == m)
  4. return 1 + p(n, m - 1);
  5. if (m == 0 || n < 0)
  6. return 0;
  7. if (n == 0 || m == 1)
  8. return 1;
  9.  
  10. return p(n, m - 1) + p(n - m, m);
  11.  
  12. }
  13.  
  14. p(n, m) - p(n, m - 1) = p(n-m, m) (1)
  15.  
  16. / 0 (k>n)
  17. p(k,n)={ 1 (k=n)
  18. p(k+1,n)+p(k,n-k) (k<n)
  19.  
  20. #include <stdio.h>
  21.  
  22. /* 406 is the largest n for which p(n) fits in 64 bits */
  23. #define MAX 406
  24. long long int pArray[MAX][MAX];
  25.  
  26. /* Emulate array starting at 1: */
  27. #define p(k,n) pArray[k-1][n-1]
  28.  
  29. int main(int argc, char **argv) {
  30.  
  31. int n, k;
  32.  
  33. for (n = 1; n < MAX; n++) {
  34. for (k = n; k > 0; k--) {
  35. if (k > n) {
  36. p(k, n) = 0;
  37. }
  38. else if (k == n) {
  39. p(k, n) = 1;
  40. }
  41. else {
  42. p(k, n) = p(k, n-k)+p(k+1, n);
  43. }
  44. }
  45. }
  46.  
  47. for (n = 1; n < MAX; n++) {
  48. printf("p(%d)=%lldn", n, p(1,n));
  49. }
  50.  
  51. }
Add Comment
Please, Sign In to add comment