文章
2
粉丝
36
获赞
2
访问
938
动态规划: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;
}
登录后发布评论
暂无评论,来抢沙发