黑马程序员技术交流社区

标题: 编写一个程序,输出杨辉三角。 [打印本页]

作者: 邵震    时间: 2013-4-1 14:24
标题: 编写一个程序,输出杨辉三角。
本帖最后由 邵震 于 2013-4-2 15:03 编辑

编写一个程序,输出杨辉三角。
                   1
                1    1
             1    2    1
          1    3    3    1
       1    4    6    4    1
    1    5   10  10   5    1

前提:端点的数为1.
1、每个数等于它上方两数之和。
2、每行数字左右对称,由1开始逐渐变大。
3、第n行的数字有n项。
4、第n行数字和为2^(n-1)。(2的(n-1)次方)
5、第n行的第m个数和第n-m+1个数相等,即C(n-1,m-1)=C(n-1,n-m)。

这个题是我从习题里找的  求高手帮忙打一下代码 不要用递归 我还没学到那里 最好能附上详细注释


谢了
作者: 郭沐昌    时间: 2013-4-1 14:26
同求 c语言的我倒是会
作者: 刘胜寒    时间: 2013-4-1 14:41
我来给你们解答一下 ==我代码奉上
作者: 刘胜寒    时间: 2013-4-1 15:02
  1. public class Main
  2. {
  3.         public static void main(String[] aegs)
  4.         {
  5.                 int[][] arr = new int[33][33];
  6.                
  7.                 Scanner cin = new Scanner(System.in);
  8.                 for(int i=1;i<33;i++)//保存结果,先把杨辉三角的前32行保留下来
  9.                 {
  10.                         for(int j=1;j<=i;j++)
  11.                         {
  12.                                 if(j==1||j==i) arr[i][j]=1;//每一行的第一个和最后一个都是1
  13.                                 else arr[i][j] = arr[i-1][j]+arr[i-1][j-1];
  14.                                        
  15.                                        
  16.                         }
  17.                 }
  18.                
  19.                 while(cin.hasNext())//读入一个数 打印杨辉三角
  20.                 {
  21.                         int n = cin.nextInt();
  22.                         for(int i=1;i<=n;i++)
  23.                         {
  24.                                 for(int j =1;j<=i;j++)
  25.                                 {
  26.                                         if(j==i)
  27.                                         System.out.println(arr[i][j]);
  28.                                         else
  29.                                                 System.out.print(arr[i][j]+"\t");
  30.                                 }
  31.                                        
  32.                         }
  33.                 }
  34.                
  35.         }

  36. }
复制代码
凑合着看吧...写的不怎么好,没能满足楼主的要求,我再想想
作者: 刘胜寒    时间: 2013-4-1 15:04
  1. while(cin.hasNext())//读入一个数 打印杨辉三角
  2.                 {
  3.                         int n = cin.nextInt();
  4.                         for(int i=1;i<=n;i++)
  5.                         {
  6.                                 for(int j=1;j<=n-i;j++)
  7.                                         System.out.print(" ");
  8.                                 for(int j =1;j<=i;j++)
  9.                                 {
  10.                                         if(j==i)
  11.                                         System.out.println(arr[i][j]);
  12.                                         else
  13.                                                 System.out.print(arr[i][j]+" ");
  14.                                 }
  15.                         }
  16.                 }
复制代码
这次满足要求了,把上面的代码替换成这么一段代码就行了
作者: 刘胜寒    时间: 2013-4-1 15:08
当杨辉三角的数字大于10的时候就不是很规整了...
用Formant可以解决一下,就是不满足几位,前面补上空格

{9~@2TT1ERUT1VV)[RLG]ZG.jpg (7.9 KB, 下载次数: 5)

{9~@2TT1ERUT1VV)[RLG]ZG.jpg

作者: HM刘俊    时间: 2013-4-1 15:09
  1. public class Yhsanjiao{
  2. static public void main(String[] args){
  3. int[][] a=new int[6][6];
  4. for(int i=0;i<6;i++)  
  5. for(int j=0;j<6;j++)  {  
  6. if (j<i)   {  
  7.   a[i][j]=1;   
  8. if(j==0){   
  9. a[i][j]=1;  
  10.   }else{   
  11. a[i][j]=a[i-1][j-1]+a[i-1][j];
  12.      }   
  13. }else{   
  14. a[i][j]=1;  
  15. }
  16. }  
  17.   for(int i=0;i<6;i++) {
  18. for(int k=1;k<=6-i;k++)
  19. System.out.print("  ");   
  20. for(int j=0;j<=i;j++){  
  21. System.out.print(a[i][j]+"  ");
  22. }  
  23. System.out.print("\n");
  24. }
  25. }
  26. }
复制代码
希望楼主能看懂




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2