您的位置:首页 > 编程语言 > Java开发

2017第八届蓝桥杯 05 杨辉三角(java)

2018-03-09 16:11 330 查看
标题: 杨辉三角

杨辉三角也叫帕斯卡三角,在很多数量关系中可以看到,十分重要。

第0行:           1
第1行:          1 1
第2行:         1 2 1
第3行:        1 3 3 1
第4行:       1 4 6 4 1
....

两边的元素都是1, 中间的元素是左上角的元素与右上角的元素和。

我们约定,行号,列号都从0计数。
所以: 第6行的第2个元素是15,第3个元素是20

直观地看,需要开辟一个二维数组,其实一维数组也可以胜任。
如下程序就是用一维数组“腾挪”的解法。

public class A
{
// 杨辉三角形的第row行第col列
static long f(int row, int col){
if(row<2) return 1;
if(col==0) return 1;
if(col==row) return 1;

long[] a = new long[row+1];
a[0]=1;
a[1]=1;

int p = 2;

while(p<=row){
a[p] = 1;
for( __________________ ) a[q] = a[q] + a[q-1];
p++;
}

return a[col];
}

public static void main(String[] args){
System.out.println(f(6,2));
System.out.println(f(6,3));
}
}

请仔细分析源码,并完成划线部分缺少的代码。
注意:只提交缺少的代码,不要提交已有的代码和符号。也不要提交说明性文字。

结果:
int q=p-1;q>0;q--

代码如下:public class Main {

static long f(int row, int col){
if(row<2) return 1; //第一行和第二行都为1
if(col==0) return 1;
if(col==row) return 1; //最后一个数

long[] a = new long[row+1];
a[0]=1;
a[1]=1;

int p = 2;

while(p<=row){ //p:行数
a[p] = 1; //杨辉每一行的最后一个数为1
for(int q=p-1;q>0;q--) //从杨辉每一行的倒数第二数开始计算
a[q] = a[q] + a[q-1]; //可以看出是从后往前来计算
p++;
}

return a[col]; //返回指定的行数的值
}

public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(f(6,2));
System.out.println(f(6,3));
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: