黑马程序员技术交流社区
标题:
关于杨辉三角
[打印本页]
作者:
杨雯雯
时间:
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]中放入数据对吧、
修改后代后:
package org.qyx.online;
public class TestYHSJ {
public static void main(String[] args) {
int[][] a = new int[10][10];
for (int i = 0; i < 10; i++) {
a[i][i] = 1;
a[i][0] = 1;
}
for (int i = 2; i < 10; i++) {
for (int j = 1; j < 10; j++) { //此处j应该从1开始的、
a[i][j] = a[i-1][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[i][j] + " ");
}
System.out.println();
}
}
}
复制代码
输出结果:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
复制代码
作者:
张会文
时间:
2013-1-2 17:43
本帖最后由 张会文 于 2013-1-2 17:52 编辑
package excrise;
public class resultlove {
public static void main(String[] args) {
int row = 10;
int colunm = row * 2;
int half_colunm = colunm / 2;
int [][]array = new int [row][colunm];
int index = 0;
for(int i = 0; i < row; i++){
//左边三角形
for(int j = 0; j < half_colunm - i - 1; j++){
array[i][j] = 0;
index++;
}
//为单独的1赋值
array[i][index++] = 1;
//从第2行起,规律为里边的任意一个数等于上一行的左上+右上
if(i != 0){
//内部三角形
for(int k = 0; k < i * 2; k++){
if(k % 2 == 0){
array[i][index] = 0;
}else{
array[i][index] = array[i - 1][index - 1] + array[i - 1][index + 1];
}
index++;
}
//计算剩余的行
int lastColunm = row - index;
for(int j = 0; j < lastColunm; j++){
array[i][index] = 0;
index++;
}
}
//每一行重置指针index
index = 0;
}
//格式输出
for(int i = 0; i < row; i++){
for(int j = 0; j < colunm; j++){
if(array[i][j] == 0){
System.out.printf("%-3s","");
}else{
System.out.printf("%-3s",array[i][j]);
}
}
System.out.println();
}
}
}
复制代码
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
复制代码
你写的太乱了,你参考一下这个:
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2