黑马程序员技术交流社区

标题: 关于杨辉三角 [打印本页]

作者: 杨雯雯    时间: 2013-1-2 17:22
标题: 关于杨辉三角
本帖最后由 杨雯雯 于 2013-1-7 14:16 编辑

public static void main(String[] args)
{
int[][] a = new int[10][10];
for (int i=0;i<10;i++)
{
a = 1;
a[0] = 1;
}
for(int i=2;i<10;i++)
{
for (int j=2;j<10;j++)
{
a[j] = a[i-10][j-1] + a[i-1][j];
}
}
for(int i=0;i<10;i++)
{
for(int k=0;k<2*(10-i)-1;k++)
{
System.out.print(" ");
}
for(int j=0;j<=i;j++)
{
System.out.print(a[j]+"   ");
}
System.out.println();
}
}
哪里错了?

作者: 刘文超    时间: 2013-1-2 17:34
本帖最后由 刘文超 于 2013-1-2 17:52 编辑

lz你好,
在向数组中存入数据的时候,j应该从1开始的。见注释!!
可以从代码中看出,在初始化的时候,只将a[0]和a(即第一个和最后一个)初始化为1;
从来没有向a[1]中放入数据对吧、

修改后代后:
  1. package org.qyx.online;

  2. public class TestYHSJ {

  3.         public static void main(String[] args) {
  4.                 int[][] a = new int[10][10];
  5.                 for (int i = 0; i < 10; i++) {
  6.                         a[i][i] = 1;
  7.                         a[i][0] = 1;
  8.                 }
  9.                 for (int i = 2; i < 10; i++) {
  10.                         for (int j = 1; j < 10; j++) {   //此处j应该从1开始的、
  11.                                 a[i][j] = a[i-1][j - 1] + a[i - 1][j];
  12.                         }
  13.                 }
  14.                 for (int i = 0; i < 10; i++) {
  15.                         for (int k = 0; k < 2 * (10 - i) - 1; k++) {
  16.                                 System.out.print(" ");
  17.                         }
  18.                         for (int j = 0; j <= i; j++) {
  19.                                 System.out.print(a[i][j] + "   ");
  20.                         }
  21.                         System.out.println();
  22.                 }
  23.         }
  24. }
复制代码
输出结果:
  1.                    1   
  2.                  1   1   
  3.                1   2   1   
  4.              1   3   3   1   
  5.            1   4   6   4   1   
  6.          1   5   10   10   5   1   
  7.        1   6   15   20   15   6   1   
  8.      1   7   21   35   35   21   7   1   
  9.    1   8   28   56   70   56   28   8   1   
  10. 1   9   36   84   126   126   84   36   9   1   
复制代码

作者: 张会文    时间: 2013-1-2 17:43
本帖最后由 张会文 于 2013-1-2 17:52 编辑
  1. package excrise;
  2. public class resultlove {
  3.     public static void main(String[] args) {
  4.         int row = 10;
  5.         int colunm = row * 2;
  6.         int half_colunm = colunm / 2;
  7.       int [][]array = new int [row][colunm];
  8.       int index = 0;
  9.       for(int i = 0; i < row; i++){
  10.              //左边三角形
  11.             for(int j = 0; j < half_colunm - i - 1; j++){
  12.                 array[i][j] = 0;
  13.                 index++;
  14.              }         
  15.             //为单独的1赋值
  16.             array[i][index++] = 1;
  17.             //从第2行起,规律为里边的任意一个数等于上一行的左上+右上
  18.             if(i != 0){
  19.                 //内部三角形
  20.                 for(int k = 0; k < i * 2; k++){
  21.                     if(k % 2 == 0){
  22.                         array[i][index] = 0;
  23.                     }else{
  24.                         array[i][index] = array[i - 1][index - 1] + array[i - 1][index + 1];
  25.                     }

  26.                     index++;

  27.                 }

  28.                 //计算剩余的行

  29.                 int lastColunm = row - index;

  30.                 for(int j = 0; j < lastColunm; j++){

  31.                     array[i][index] = 0;
  32.                     index++;

  33.                 }

  34.             }

  35.             //每一行重置指针index
  36.               index = 0;
  37.      }

  38.         //格式输出

  39.         for(int i = 0; i < row; i++){

  40.             for(int j = 0; j < colunm; j++){  

  41.                 if(array[i][j] == 0){

  42.                     System.out.printf("%-3s","");
  43.                 }else{

  44.                     System.out.printf("%-3s",array[i][j]);
  45.                 }

  46.             }

  47.             System.out.println();
  48.         }
  49.     }
  50. }
复制代码
  1.                            1            
  2.                         1     1                             
  3.                      1     2     1                          
  4.                   1     3     3     1                       
  5.                1     4     6     4     1                    
  6.             1     5     10    10    5     1                 
  7.          1     6     15    20    15    6     1              
  8.       1     7     21    35    35    21    7     1           
  9.    1     8     28    56    70    56    28    8     1        
  10. 1     9     36    84    126   126   84    36    9     1     
复制代码
你写的太乱了,你参考一下这个:






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