A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邵震 高级黑马   /  2013-4-1 14:24  /  1528 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 邵震 于 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)。

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


谢了

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1 继续努力奋斗!加油!

查看全部评分

6 个回复

倒序浏览
同求 c语言的我倒是会
回复 使用道具 举报
我来给你们解答一下 ==我代码奉上
回复 使用道具 举报
  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. }
复制代码
凑合着看吧...写的不怎么好,没能满足楼主的要求,我再想想

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
  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.                 }
复制代码
这次满足要求了,把上面的代码替换成这么一段代码就行了
回复 使用道具 举报
当杨辉三角的数字大于10的时候就不是很规整了...
用Formant可以解决一下,就是不满足几位,前面补上空格

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

{9~@2TT1ERUT1VV)[RLG]ZG.jpg
回复 使用道具 举报
  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. }
复制代码
希望楼主能看懂

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马