1、第一行有1列,二行有2列,三行3列
2、每一行的第一个数和最后一个数字都是1
3、其余的数字都是前一行的前一列数字和前一行的同一列数字之和
打印出前10行~
帮帮忙~

解决方案 »

  1.   


    int[,] a = new int[10,10]; 
    for (int i = 0; i < 10; i++) 

    a[i,0] = 1; 
    a[i,i] = 1; 

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

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

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


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

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

    Console.Write(a[i,j] + "\t");       //Write:向输入流写入字符或者字符串,"\t"为水平Tab,这个是转义字符。

    Console.WriteLine("\t");          //Writeline:向输出流写入文本行,有回车终止文本行。

    LZ请参详.......
      谢谢!
      

  2.   

    嗯!
      没错,实际上就是打印出杨辉三角.....
      杨辉三角是这样的     1
        1 1
       1 2 1
      1 3 3 1
     1 4 6 4 1左右对称,所以把它按对称轴分开并且空缺的位置用0补上,看下效果00001
    00010
    00102
    01030
    10406可以看出来这是个三角矩阵。1.在这个下三角的矩阵中(不看上三角的那些0),每列都是数字和0间隔的2.每排最后一个元素的值是前一排倒数第二个元素的二倍。3.在每排数字中数字1只出现1次4.每排除了数字1和最后一个元素,每个元素(非0、1)的值都是上一排与其对应位置的相邻的两元素的和.5.整个过程只用1个一维数组,所以用了2个临时变量。一个是用来存放被0覆盖但下次计算仍然需要的,还有一个是存放最后一个元素的值。就是2中说到的。这样就得到了这个算法。
    using System;namespace yanghui
    {
        class Program
        {
            static void Main()
            {
                int n = Convert.ToInt32(Console.ReadLine());
                tr(n);
            }
            static void tr(int n)
            {
                int[] temp_arr = new int[n + 1];
                int temp = 0, last = 0;
                int rule;
                for (int j = 0; j <=n; j++)
                {
                    rule = n;
                    if (j == 0)
                    {
                        temp_arr[n] = 1;
                    }                else
                    {
                        last = temp_arr[n - 1] * 2;
                        for (int i = 0; i <= n; i++)
                        {
                            if (temp_arr[i] == 1)
                            {
                                temp_arr[i - 1] = temp_arr[i];
                                temp = temp_arr[i];
                                temp_arr[i] = 0;
                            }
                            else
                            {
                                if (temp_arr[i] != 0)
                                {
                                    temp_arr[i - 1] = temp_arr[i] + temp;
                                    temp = temp_arr[i];
                                    temp_arr[i] = 0;
                                }
                            }
                        }
                        temp_arr[n] = last;
                    }
                    while (rule >= -n)
                    {
                        if (temp_arr[n - Math.Abs(rule)] == 0)
                            Console.Write(" ");
                        else 
                            Console.Write("{0}", temp_arr[n - Math.Abs(rule)]);
                        rule--;
                    }
                    Console.Write("\n");//fdfdfasdf
                }
            }
        }
    }
    由于用了半个三角形,所以在输出的时候用了一点小技巧,就是绝对值,来正常的显示整个三角形。