蓝桥杨辉三角 JAVA填空

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

第0行: 1
第1行: 1 1
第2行: 1 2 1
第3行: 1 3 3 1
第4行: 1 4 6 4 1
第5行: 1 5 10 10 5 1
第6行: 1 6 15 20 15 6 1
题目要的是15和20的输出
两边的元素都是1, 中间的元素是左上角的元素与右上角的元素和。

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

直观地看,需要开辟一个二维数组,其实一维数组也可以胜任。
如下程序就是用一维数组“腾挪”的解法。
思路:从左往右,可能会改变数字,而从右往左推则不会出现问题,所以我们就可以逆推法来完成这道题!!
重点:for(int q=1;q<p;q++);这个应该是咱们的第一想法,但是结果是不对的,所以就想到思路!!


public class Main{
	// 杨辉三角形的第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 (int q = p - 1; q >= 1; q--)     //填空位置
				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));
	}
}

小剧场:世界在大量生产着乌云,我们不得不继续奔跑。

发布了71 篇原创文章 · 获赞 68 · 访问量 8137

猜你喜欢

转载自blog.csdn.net/weixin_43771695/article/details/104553366
今日推荐