fork(1) download
  1. #include <stdio.h>
  2.  
  3. void Enqueue(int *Q,int *f,int *r,int item)
  4. {
  5. if(*r==-1)
  6. (*f)++;
  7. Q[++(*r)]=item;
  8. }
  9.  
  10. int Dequeue(int *Q,int *f,int *r)
  11. {
  12. int ret=Q[*f];
  13. if(*f==*r)
  14. {
  15. *f=-1;*r=-1;
  16. }
  17. else
  18. (*f)++;
  19. return ret;
  20. }
  21.  
  22. int isEmpty(int *r)
  23. {
  24. if(*r==-1)
  25. return 1;
  26. return 0;
  27. }
  28.  
  29. void printPascalTriangle(int n)
  30. {
  31. int line=1,Q[50]={0},f=-1,r=-1,prev,t;
  32.  
  33. Enqueue(Q,&f,&r,1);
  34. Enqueue(Q,&f,&r,0);
  35.  
  36. prev=0;
  37. while(line!=n)
  38. {
  39. t = Dequeue(Q,&f,&r);
  40.  
  41. if( !t )
  42. {
  43. line++;
  44. prev = 0;
  45. Enqueue(Q,&f,&r,1);
  46.  
  47. if(!isEmpty(&r))
  48. Enqueue(Q,&f,&r,0);
  49.  
  50. printf("\n");
  51. }
  52. else
  53. {
  54. printf("%d ", t);
  55. Enqueue(Q,&f,&r,prev+t);
  56. prev = t;
  57. }
  58. }
  59. }
  60.  
  61. int main()
  62. {
  63. int n;
  64. scanf("%d",&n);
  65.  
  66. printPascalTriangle(n);
  67. return 0;
  68. }
Success #stdin #stdout 0.02s 1680KB
stdin
8
stdout
1 
1 1 
1 2 1 
1 3 3 1 
1 4 6 4 1 
1 5 10 10 5 1 
1 6 15 20 15 6 1