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));
}
}
杨辉三角也叫帕斯卡三角,在很多数量关系中可以看到,十分重要。
第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));
}
}
相关文章推荐
- 2017第八届蓝桥杯Java省赛有感
- 2017第八届蓝桥杯省赛Java A组--迷宫
- 2017第八届蓝桥杯省赛Java A组--9数算式
- 2017第八届蓝桥杯 08 包子凑数(java)
- 2017第八届蓝桥杯Java B组省赛第一题:购物单
- 2017第八届蓝桥杯 03 纸牌三角形(java)
- 2017第八届蓝桥杯 07 Excel地址(java)
- 2017第八届蓝桥杯 06 最大公共子串(java)
- 2017第八届蓝桥杯省赛Java A组--方格分割
- 2017第八届蓝桥杯 02 兴趣小组(java)
- 2017第八届蓝桥杯 01 外星日历(java)
- 2017第八届蓝桥杯省赛Java A组--迷宫
- 2017第八届蓝桥杯省赛Java A组--9数算式
- 2017第八届蓝桥杯省赛Java A组--正则问题
- 2017第八届蓝桥杯省赛Java A组--字母组串
- 2017第八届蓝桥杯 04 取数位(java)
- 2017第八届蓝桥杯省赛Java A组--取球博弈
- 2017第八届蓝桥杯省赛Java A组--最大公共子串
- 2017第八届蓝桥杯省赛Java A组--包子凑数
- 2017第八届蓝桥杯 04 承压计算(java)