Advertisement
Guest User

Untitled

a guest
May 6th, 2016
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.96 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int cnt = 0;
  4. int catalan(int);
  5.  
  6. int main(){
  7.  
  8.   printf("\n\n-------------------------------------------------------------");
  9.   printf("\n\nEficient.c\n\n");
  10.  
  11.   printf("----------------------[PROGRAM STARTED]----------------------\n\n");
  12.  
  13.  
  14.   printf("\n-------------------------[Eficient]--------------------------\n\n");
  15.  
  16.   int n;
  17.   printf("N\tEficiente(N)\tNº de Multiplicações\n");
  18.   for(n = 0;n<13;n++){
  19.       printf("%d\t%d\t\t%d\n",n,catalan(n),cnt);
  20.  
  21.   }
  22.  
  23.   printf("\n-----------------------[PROGRAM ENDED]-----------------------\n\n");
  24.  
  25.   return 0;
  26. }
  27.  
  28. int catalan(int n){
  29.  
  30.   int i,j,mid;
  31.   unsigned int tmp[n+1];
  32.  
  33.   tmp[0] = 1;
  34.  
  35.     for(i = 1 ; i <= n ; i++){
  36.       tmp[i]=0;
  37.       mid = i/2;
  38.       for(j = 0 ; j < mid ; j++){
  39.         tmp[i] += tmp[j] * tmp[i-j-1]<<1;
  40.         cnt++;
  41.       }
  42.  
  43.       if(i%2 != 0){
  44.         tmp[i] += tmp[mid] * tmp[mid];
  45.         cnt++;
  46.       }
  47.     }
  48.  
  49.   return tmp[n];
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement