fork download
  1. #include <stdio.h>
  2. #include <time.h>
  3.  
  4. #define MAX_N 1001
  5. #define MAX_M 101
  6.  
  7. int memo[MAX_N][MAX_M];
  8.  
  9. int S(int n, int m) {
  10. if (memo[n][m] != -1)
  11. return memo[n][m];
  12.  
  13. if (n > m && m > 1)
  14. return memo[n][m] = m * S(n - 1, m) + S(n - 1, m - 1);
  15. else
  16. return memo[n][m] = 1;
  17. }
  18.  
  19. int main(void) {
  20. int cases = 0;
  21.  
  22. scanf("%d", &cases);
  23.  
  24. while (cases--) {
  25. int n = 0, m = 0;
  26.  
  27. scanf("%d %d", &n, &m);
  28.  
  29. // Initialize memoization table
  30. for (int i = 0; i <= n; ++i) {
  31. for (int j = 0; j <= m; ++j) {
  32. memo[i][j] = -1;
  33. }
  34. }
  35.  
  36. printf( "%d time : %lf\n", S( n , m ) % 2 , (double)clock()/CLOCKS_PER_SEC ) ;
  37. }
  38.  
  39. return 0;
  40. }
  41.  
Success #stdin #stdout 0s 5304KB
stdin
2
4 2
800 501
stdout
1 time : 0.003153
0 time : 0.003866