当前位置: 代码迷 >> C语言 >> 等腰杨辉三角
  详细解决方案

等腰杨辉三角

热度:509   发布时间:2008-01-08 21:53:02.0
等腰杨辉三角
我在网上找到了等腰杨辉三角的代码,不过不能理解。希望各位朋友鼎立相助;帮我解释一下。还有杨辉三角的解题思路。可以给我讲一讲吗??(本人是菜鸟,有很多的题不会做。本人希望在解题中知道其中的原理,希望各位大大能讲细一下其中的原理。)在这里先谢谢了
main()
{
    int i,j;
    int a[5][5];

    printf("\n\n\n");
    for(i=0;i<10;i++)
    for(j=0;j<=i;j++)
   {
       if(j==0||j==i)
         a[i][j]=1;
       else
       a[i][j]=a[i-1][j-1]+a[i-1][j];
   }
   for(i=0;i<5;i++)
  {
   for(j=0;j<=5-i;j++)
   printf("%2c",' ');
   for(j=0;j<=i;j++)
   printf("%4d",a[i][j]);
   printf("\n");
  }

getch();
}
搜索更多相关的解决方案: 杨辉三角  等腰  

----------------解决方案--------------------------------------------------------
你知道什么是杨辉三角不
----------------解决方案--------------------------------------------------------
不太知道,只知道是
      1
          1    1
       1     2      1
    1     3       3      1
用数学公式(a+b)的平方展开
----------------解决方案--------------------------------------------------------
我只能告诉你,对数组的操作,其实就是对下标的操作,你可以把杨辉三角画出来!
然后,在底下对应写出下标,便于理解!
然后,观察规律!下标是从0到n-1这个很容易误导人!
----------------解决方案--------------------------------------------------------
我知道是对下标的操作。但是不知道怎么画出图形(特别是等腰的。编译)。希望可以给我指点一下。怎么用FOR语句画图形。还有怎么确定等腰三角的第一个1的位置呀??
----------------解决方案--------------------------------------------------------
你可以这么想,假设一个数字占4个字的位置。那么设最底层有十个数字,就是40,第一层应该在中间,也就是20,然后每次递减4个具体可以看我的代码:
程序代码:
#include <stdio.h>
#define N 10

void PrintYH() {
    int i,j,arr[2][N]={0};
    for (i=0;i<N;i++) {
        for (j=0;j<=i;j++) {
            if (i==0 || j==0) {
                arr[i%2][j]=1;
                printf("%*d",(N-i)*2,arr[i%2][j]);
            }
            else {
                arr[i%2][j]=arr[!(i%2)][j-1]+arr[!(i%2)][j];
                printf("%4d",arr[i%2][j]);
            }
        }
        printf("\n");
    }
}

int main() {
    PrintYH();
    getchar();
}
顺便说一下,代码使用了两“层”数组,在空间和时间上取得了最佳平衡。

[[italic] 本帖最后由 StarWing83 于 2008-1-9 13:05 编辑 [/italic]]
----------------解决方案--------------------------------------------------------