java实现杨辉三角,输出对齐

图片

闲来无事,发现2010年面试自己写的程序,贴出来留作记忆

这两天,看到身边的两个室友失败而归,问问得知,公司出了一个杨辉三角的上机题,一个半小时,可以上网查。都失败了!其实算法不难,就是不会,也可以上网查一下,最关键的是要对齐,输出的每个数都要整整齐齐,这个网上可搜不到,呵呵,网上有算法,可都没有对齐的。我用了三个小时整理了一份,呵呵,可能以后你也会碰到哦,看看吧。

public class YangHui {


 public static void main(String[] args) {
  YangHui.printYH(20);
 }
 public static void printYH(int row){
  String num_max = "";      
  String value = "";
  int[][] a = new int[row][row];  //声明一个二维数组,存储杨辉三角
  for(int i=0;i<row;i++){    
   if(i==0){      //三角顶点时数字1
    a[0][0] = 1;    
   }
   else{       //三角两边也是数字1
    a[i][0] = 1;
    a[i][i] = 1;
   }
  }
  for(int i=1;i<row;i++){    //去除两边,杨辉三角,就是下面的数是自己上面两个数的和,自己最好画个图
   for(int j=1;j<i;j++){
    a[i][j] = a[i-1][j-1]+a[i-1][j];
   }
  }
  num_max = String.valueOf(a[row-1][row/2]);
  for(int m=0;m<num_max.length();m++)
    value += " ";     //根据最大数字的长度计算,空格的单位
  for(int i=0;i<row;i++){
     for(int n=0;n<=row-i;n++)  //打印数据距左边的距离
     System.out.print(value+" ");
     for(int j=0;j<=i;j++){
      String min="";    //当数字长度大于1,重新计算空格数目
      int num_len = String.valueOf(a[i][j]).length();  //得到输出的数字长度
      if(num_len>1){    //当数字长度大于1位时,输出空格数要减去自身的长度,这样才能对其
       for(int v=0;v<=(num_max.length()-num_len);v++){  
        min += " ";     
       }
        System.out.print(a[i][j]+value+min+" ");
      }
      else{    //数字位数为1位时输出  
       System.out.print(a[i][j]+value+value+" ");
      }
     }
     System.out.println();   //换行
  }
 }
}


  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值