回覆列表
  • 1 # 使用者5563698713920

    C語言輸出楊輝三角

    直角三角形楊輝三角

      //c語言,求直角的

      #include<stdio.h>

      #defineM10

      voidmain()

      {

      inta[M][M],i,j;

      for(i=0;i<M;i++)

      for(j=0;j<=i;j++)

      {

      if(i==j||j==0)

      a[i][j]=1;

      else

      a[i][j]=a[i-1][j]+a[i-1][j-1];

      printf("%d",a[i][j]);

      if(i==j)printf("\n");

      }

      }

      使用陣列列印金字塔型楊輝三角

      #include<stdio.h>

      voidmain()

      {

      inta[10][10],i,j;

      for(i=0;i<10;i++)

      {

      for(j=10;j>=i;j--)

      printf("%2c","");/*兩個空格*/

      for(j=0;j<=i;j++)

      {

      if(i==j||j==0)

      a[i][j]=1;

      else

      a[i][j]=a[i-1][j]+a[i-1][j-1];

      printf("%3d",a[i][j]);/*%3d後一個空格*/

      if(i==j)

      printf("\n");

      }

      }

      }

      不用陣列輸出金字塔形楊輝三角

      #include<stdio.h>

      #defineN10

      voidmain()

      {

      unsignedinti,j,k;

      unsignedintb,c;

      for(i=0;i<N;i++)

      {

      for(j=N;j>i;j--)

      printf("");

      for(j=0;j<=i;j++)

      {

      b=c=1;

      if(j>=1)

      {

      for(k=i-j+1;k<=i;k++)

      b*=k;

      for(k=1;k<=j;k++)

      c*=k;

      }

      printf("%4d",b/c);

      }

      printf("\n");

      }

      }

      註解:

      在列印楊輝三角時通常用到楊輝三角的兩個性質。

      第一個就是楊輝三角中除了最外層(不包括楊輝三角底邊)的數為1外,其餘的數都是它肩上兩個數之和。用陣列輸出楊輝三角就用這個性質。

      第二個性質是楊輝三角的第n行恰好是C(n,0)~C(n,n)。這裡的C表示組合。不用陣列輸出楊輝三角就用這個性質。把楊輝三角的前15行儲存在文字檔案中 #include<stdio.h>

      #include<stdlib.h>

      #defineM15

      voidmain()

      {

      FILE*out;

      if((out=fopen("D:\\text_1.txt","w"))==NULL)

      {

      printf("Error!\n");

      exit(0);

      }

      inta[M][M],i,j;

      for(i=0;i<M;i++)

      for(j=0;j<=i;j++)

      {

      if(i==j||j==0)

      a[i][j]=1;

      else

      a[i][j]=a[i-1][j]+a[i-1][j-1];

      fprintf(out,"%5d",a[j]);

      if(i==j)

      fputc("\n",out);

      }

      fclose(out);

      }

      用二維陣列輸出前十行:

      #include<stdio.h>

      intmain()

      {

      inta[10][10],i,j;

      for(i=0;i<10;i++)

      {

      a[i][i]=1;

      a[i][0]=1;

      }

      for(i=2;i<10;i++)

      for(j=1;j<=i-1;j++)

      a[i][j]=a[i-1][j-1]+a[i-1][j];

      for(i=0;i<10;i++)

      {

      for(j=0;j<=i;j++)

      printf("%6d",a[i][j]);

      printf("\n");

      }

      printf("\n");

      return0;

      }

    編輯本段VB輸出楊輝三角

      PrivateSubForm_click()

      n=Val(Text1.Text)

      ReDima(n+1,n+1),b(n+1,n+1)

      Cls

      k=8

      Fori=1Ton

      PrintString((n-i)*k/2+1,"");

      Forj=1Toi

      a(i,1)=1

      a(i,i)=1

      a(i+1,j+1)=a(i,j)+a(i,j+1)

      b(i,j)=Trim(Str(a(i,j)))

      Printb(i,j);String(k-Len(b(i,j)),"");

      Nextj

      Print

      Nexti

      EndSub

      建立一個text和command,在text中輸入所需行數,點選command即可。一個數在楊輝三角出現的次數 由1開始,正整數在楊輝三角形出現的次數為∞:1,2,2,2,3,2,2,2,4,2,2,2,2,4,...(OEIS:A003016)。最小而又大於1的數在賈憲三角形至少出現n次的數為2,3,6,10,120,120,3003,3003,...(OEIS:A062527)

      除了1之外,所有正整數都出現有限次。

      只有2出現剛好一次。

      6,20,70等出現三次。

      出現兩次和四次的數很多。

      還未能找到出現剛好五次的數。

      120,210,1540等出現剛好六次。(OEIS:A098565)

      因為丟番圖方程

      :

      有無窮個解,所以出現至少六次的數有無窮個多。

      其解答,是

      其中Fn表示第n個斐波那契數(F1=F2=1)。

      3003是第一個出現八次的數。

      一道NOIP楊輝三角題目:

      #include<stdio.h>

      #definemaxn50

      constinty=2009;

      intmain()

      {

      intn,c[maxn][maxn],i,j,s=0;

      scanf("%d",&n);

      c[0][0]=1;

      for(i=1;i<=n;i++)

      {

      c[i][0]=1;

      for(j=1;j<i;j++)

      c[i][j]=c[i-1][j-1]+c[i-1][j];

      c[i][i]=1;

      }

      for(i=0;i<=n;i++)

      s=(s+c[n][i])%y;

      printf("%d\n",s);

      return0;

      此為利用陣列求和

    Java實現

      程式碼:

      publicclassYhuiTest{

      publicstaticvoidmain(String[]args){

      finalintRow=6;

      intyh[][]=newint[Row][Row];

      for(inti=0;i<Row;i++){

      yh[i][0]=1;

      yh[i][i]=1;

      }

      for(inti=2;i<Row;i++){

      for(intj=1;j<Row;j++){

      yh[i][j]=yh[i-1][j-1]+yh[i-1][j];

      }

      }

      for(inti=0;i<Row;i++){

      for(intj=0;j<=i;j++){

      System.out.print(yh[i][j]+"");

      }

      System.out.println();

      }

      }

      }

    程式碼

      結果:

    C++輸出楊輝三角

      //單陣列動態規劃輸出楊輝三角,以下截止第31行

      #include<iostream>

      usingnamespacestd;

      #defineMAXH31

      intmain()

      {

      inti,j;

      unsignedlongnum[MAXH]={0};

      num[0]=1;

      for(i=0;i<MAXH;i++)

      {

      for(j=i;j>0;j--)

      {

      num[j]=num[j]+num[j-1];//A[i,j]=A[i,j-1]+A[i,j]

      cout<<num[j]<<"";

      }

      cout<<"1"<<endl;

      }

      return0;

      }

    陣列輸出楊輝三角

    /*直角三角形*

      #include<iostream>

      usingnamespacestd;

      intmain()

      {

      inth,i,j;

      cout<<"請輸入楊輝三角的高度:"<<endl;

      cin>>h;

      inta[10][10];

      for(i=0;i<10;i++)

      {

      a[i][i]=1;

      a[i][0]=1;

      }

      for(i=2;i<10;i++)

      for(j=1;j<=i-1;j++)

      a[i][j]=a[i-1][j-1]+a[i-1][j];

      for(i=0;i<=h;i++)

      {

      for(j=0;j<=i;j++)

      cout<<a[i][j]<<"\t";

      cout<<endl;

      }

      return0;

      }

    /*等腰三角形*

      #include<iostream>

      usingnamespacestd;

      intmain()

      {

      inti,j,h,a[10][10];

      cout<<"請輸入楊輝三角的高度:"<<endl;

      cin>>h;

      for(i=0;i<=h;i++)

      {

      for(j=0;j<=i;j++)

      {

      if(i==j||j==0)

      a[i][j]=1;

      else

      a[i][j]=a[i-1][j]+a[i-1][j-1];

      }

      }

      for(i=0;i<=h;i++)

      {

      for(j=h;j>=i;j--)

      cout<<"";

      for(j=0;j<=i;j++)

      {

      cout<<a[i][j]<<"\t";

      if(i==j)

      cout<<endl;

      }

      }

      return0;

      }

    遞迴方法輸出直角楊輝三角

      #include<iostream>

      usingnamespacestd;

      intcomputeTriangleElement(intlevel,intindex);

      voidyanghuiTriangle(intlevel);

      voidyanghuiTriangle(intlevel)

      {

      for(inti=1;i<=level;i++)

      {

      for(intj=1;j<=i;j++)

      {

      cout<<computeTriangleElement(i,j)<<"";

      }

      cout<<endl;

      }

      }

      intcomputeTriangleElement(intlevel,intindex)

      {

      if(index==1||index==level)

      return1;

      returncomputeTriangleElement(level-1,index-1)+computeTriangleElement(level-1,index);

      }

      intmain()

      {

      intlevel;

      cout<<"請輸入楊輝三角的高度:"<<endl;

      cin>>level;

      yanghuiTriangle(level);

      return0;

      }

    佇列輸出直角楊輝三角

      #include<stdio.h>

      #include<stdlib.h>

      #include<malloc.h>

      #defineERROR0

      #defineOK1

      #defineOVERFLOW-1

      #defineMAX_QUEUE100

      typedefintDataType;

      typedefstruct

      {

      DataTypeelem[MAX_QUEUE];

      intfront;

      intrear;

      }LinkQueue;

      intInitQueue(LinkQueue*);

      voidEnQueue(LinkQueue*,DataType);

      voidDeQueue(LinkQueue*,DataType*);

      voidGetFront(LinkQueue,DataType*);

      intQueueEmpty(LinkQueue);

      voidYangHuiTriangle(int);

      intmain()

      {

      intn=1;

      printf("pleaseenteranumber:");

      scanf("%d",&n);

      if(n<=0)

      {

      printf("ERROR!\n");

      exit(0);

      }

      YangHuiTriangle(n);

      return0;

      }

      intInitQueue(LinkQueue*Q)

      {

      Q->front=Q->rear=-1;

      return1;

      }

      voidEnQueue(LinkQueue*Q,DataTypee)

      {

      if((Q->rear+1)%MAX_QUEUE==Q->front)

      exit(OVERFLOW);

      else

      {

      Q->rear=(Q->rear+1)%MAX_QUEUE;

      Q->elem[Q->rear]=e;

      }

      }

      voidDeQueue(LinkQueue*Q,DataType*e)

      {

      if(QueueEmpty(*Q))

      {

      printf("queueisempty\n");

      exit(0);

      }

      else

      {

      Q->front=(Q->front+1)%MAX_QUEUE;

      *e=Q->elem[Q->front];

      }

      }

      voidGetFront(LinkQueueQ,DataType*e)

      {

      if(QueueEmpty(Q))

      {

      printf("queueisempty\n");

      exit(0);

      }

      else

      *e=Q.elem[(Q.front+1)%MAX_QUEUE];

      }

      intQueueEmpty(LinkQueueQ)

      {

      if(Q.front==Q.rear)

      return1;

      else

      return0;

      }

      voidYangHuiTriangle(intn)

      {

      LinkQueueQ;

      inti,j,k,t,s,e;

      InitQueue(&Q);

      for(i=0;i<n;i++)

      printf("");

      printf("1\n");

      EnQueue(&Q,1);

      EnQueue(&Q,1);

      for(i=1;i<n;i++)

      {

      for(k=0;k<n-i;k++)

      printf("");

      EnQueue(&Q,1);

      for(j=0;j<i;j++)

      {

      DeQueue(&Q,&t);

      printf("%3d",t);

      GetFront(Q,&s);

      e=t+s;

      EnQueue(&Q,e);

      }

      EnQueue(&Q,1);

      DeQueue(&Q,&t);

      printf("%d\n",t);

      }

      }

  • 中秋節和大豐收的關聯?
  • 同為商業大片的嘗試,與2016年的《長城》相比,韓國電影《與神同行》為什麼能夠成功?