1
        1 2 1 
       1 3 3 1 
      1 4 6 4 1
         '''
关于输出杨辉三角的前10行 问题,拜托哪个高手给编个代码来
发到邮箱或是直接发到这上

解决方案 »

  1.   

    如果是代码找错的话,你也发个代码呀,如果要代码的话,楼上说的很清楚,百度-google!!
      

  2.   

    public static void main(String[] args) throws Exception {
    int[][] a = new int[10][10];
    for (int i = 0; i < a.length; i++) {
    for (int j = 0; j <= i; j++) {
    a[i][j] = j == 0 ? 1 : a[i-1][j-1] + a[i-1][j];
    System.out.print (a[i][j] + " ");
    }
    System.out.println ();
    }
    }
      

  3.   

    import java.util.*;   
    public class Triangle {   
        /*  a:第K行第一个数的下标值  
         *  m:第K+1行第一个数的下标值  
         *  b:第K行最后一个数的下标值  
         *  n:第K+1行最后一个数的下标值  
         *    
         *  规律为除两侧的元素均为1以外,其余每个位置上数值都等于其左上角元素与右上角元素之和  
         *  第K行有K个数  
         *  array[m+1]=array[a]+array[a+1];  
         *  array[m+2]=array[a+1]+array[a+2];  
         *  即:  
         *  array[m+t+1]=array[a+t]+array[a+t+1];  
         *  t从零开始,t应该小于等于K-2(保证a+k-2+1=b);  
         *    
         *   
         *  由题已知:  
         *  array[a]=1;  
         *  array[b]=1;  
         *  array[m]=1;  
         *  array[n]=1;  
         *  b-a=k-1;  
         *  m=b+1;  
         *  n-m=k;  
         */  
           
           
        //int k;//行号   
           
           
        //List list = new ArrayList((k+1)*k/2);//初始化大小   
           
        public final static String SEPARATOR=" ";   
        public final static String SEPARATOR_NUM=" ";   
        public final static int LEN=6;   
        public final static int SEPARATOR_LEN=3;   
        public StringBuffer init(int k){   
      
            int a,b,m,n;//下标   
            int arr[] = new int[(k+1)*k/2];//初始化大小   
            StringBuffer sb = new StringBuffer();   
               
            //打印第一行   
            if(k>0){   
                sb.append(numSeparator(k).toString());   
                   
                sb.append(toStr(1,LEN));//此行第一个数   
            }   
               
               
            for(int L=1;L<k;L++){//行号循环   
                a = ((L-1)+1)*(L-1)/2;//第l行的第一个数的下标值   
                b = a+L-1;   
                m = b+1;   
                n = m+L;   
                arr[a]=1;   
                arr[b]=1;   
                arr[m]=1;   
                arr[n]=1;   
                   
                sb.append("\n");//新启一行   
                   
                //距离最左边占位符   
                sb.append(numSeparator(k-L).toString());   
                   
                   
                sb.append(toStr(arr[m],LEN)+separatorStr());//此行第一个数   
                   
                   
                for(int t=0;t<=L-2;t++){//计算中间的值   
                    arr[m+t+1]=arr[a+t]+arr[a+t+1];   
                    sb.append(toStr(arr[m+t+1],LEN)+separatorStr());   
                }   
                   
                sb.append(toStr(arr[n],LEN));//此行最后一个数   
                   
            }   
      
      
            return sb;   
               
        }   
           
        /**  
         * 设定数字的长度为len  
         * 不足长度的以空格补齐  
         * @param x  
         * @param len  
         * @return  
         */  
        public String toStr(int x,int len){   
            StringBuffer sb = new StringBuffer("");   
            String str = String.valueOf(x);   
            if(str.length()<len){   
                int i = len-str.length();   
                for(int k=0;k<i/2;k++){   
                    sb.append(Triangle.SEPARATOR_NUM);   
                }   
                sb.append(str);   
                for(int k=i/2;k<i;k++){   
                    sb.append(Triangle.SEPARATOR_NUM);   
                }   
            }else{   
                sb.append(str);   
            }   
               
            return sb.toString();   
        }   
           
        /**  
         * //两个数字之间占位符长度的一半  
         * @return  
         */  
        public String separatorStr(){   
            StringBuffer sb = new StringBuffer("");   
            for(int p=0;p<SEPARATOR_LEN;p++){//两个数字之间占位符长度的一半   
                sb.append(SEPARATOR);   
            }   
            return sb.toString();   
        }   
           
        /**  
         * (总行数-行数序号(从一开始))*两个数字之间占位长度/2  
         * k行距离左边的占位符数  
         * @param k  
         * @return  
         */  
        public String numSeparator(int k){   
               
            StringBuffer sb = new StringBuffer("");   
            for(int j=0;j<k-1;j++){   
                for(int p=0;p<SEPARATOR_LEN/2;p++){//两个数字之间占位符长度的一半   
                    sb.append(SEPARATOR);   
                }   
                   
                for(int p=0;p<=LEN/2;p++){//预设数字本身长度的一半   
                    sb.append(SEPARATOR_NUM);   
                }   
                       
            }   
            return sb.toString();   
        }   
           
           
        public static void main(String[] arr){   
               
            int k=20;   
            if(arr.length>=1){   
                try{   
                    k=Integer.parseInt(arr[0]);   
                }catch(NumberFormatException e){   
                    System.out.print(e.getMessage());   
                }   
            }   
               
            Triangle t = new Triangle();   
               
            System.out.print(t.init(k).toString());        
        }