文章

2

粉丝

36

获赞

2

访问

852

头像
杨辉三角形 - 西北工业大学 题解:
P1392 西北工业大学
发布于2024年5月28日 16:49
阅读数 473

动态规划:dp[i][j] = dp[i - 1][j - 1] + dp[i - 1][j];

压缩成一维:dp[j] = dp[j - 1] + dp[j];

为了保留上一层的结果,从后往前遍历;

全部初始化为0,就不需要考虑头尾两个元素。

#include<bits/stdc++.h>
using namespace std;

int main(){
	int n;
	while(cin >> n){
		int *arr = (int *)malloc(sizeof(int) * n);
		memset(arr, n, 0);
		arr[0] = arr[1] = 1;
		cout << 1 << ' ' << 1 << endl;
		for(int i = 2; i < n; ++i){
			for(int j = i; j >= 0; --j){
				arr[j] = arr[j] + arr[j-1];
			}
			for(int j = 0; j <= i; ++j){
				cout << arr[j] << ' ';
			}
			cout << endl;
		}
	}
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发