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

来源:互联网 发布:java线程面试题 编辑:程序博客网 时间:2024/06/05 07:40

图片

闲来无事,发现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();   //换行  } }}


3 0
原创粉丝点击